我在我的数据库中有一个名为"学生"的表包含以下列(student_id,student_name,year_of_birth).和多年的数组我尝试进行一次查询,每年在(年)数组中获得10个student_id.
我可以写
SELECT student_id FROM `students` WHERE year_of_birth=1950 LIMIT 10;
SELECT student_id FROM `students` WHERE year_of_birth=1951 LIMIT 10;
SELECT student_id FROM `students` WHERE year_of_birth=1952 LIMIT 10;
SELECT student_id FROM `students` WHERE year_of_birth=1953 LIMIT 10;
(and so on)
Run Code Online (Sandbox Code Playgroud)
但那将是非常耗时的还有其他选择谢谢
如果您担心查询将返回多个结果集,您可以UNION ALL在每个结果集之间添加一个SELECT:
SELECT student_id FROM `students` WHERE year_of_birth=1950 LIMIT 10
UNION ALL
SELECT student_id FROM `students` WHERE year_of_birth=1951 LIMIT 10
UNION ALL
...
Run Code Online (Sandbox Code Playgroud)
这当然可以与 alexn 从年份数组生成查询的方法相结合。
我不认为这会给你带来比单独查询更好的性能,但它可能(在 MySQL 的未来版本中),因为它为数据库引擎提供了更多关于你正在做什么的信息。