Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在MySQL中选择一些行,然后选择其他行?_Mysql_Union - Fatal编程技术网

如何在MySQL中选择一些行,然后选择其他行?

如何在MySQL中选择一些行,然后选择其他行?,mysql,union,Mysql,Union,我有这个问题,它是有效的,但我不确定这是否是最好的方法,我没有得到我想要的 我需要首先选择包含在“in”子句中的查询,然后选择与其他查询的联合。返回的整行必须为40 SELECT * FROM ( SELECT * FROM tbl_x a WHERE id IN(11,20,30) UNION ALL SELECT * FROM tbl_x b WHERE exam_group='jpx' AND subject='chemistry' ) ab GROUP B

我有这个问题,它是有效的,但我不确定这是否是最好的方法,我没有得到我想要的

我需要首先选择包含在“in”子句中的查询,然后选择与其他查询的联合。返回的整行必须为40

SELECT * 
FROM (
    SELECT * FROM tbl_x a WHERE id IN(11,20,30) 
    UNION ALL 
    SELECT * FROM tbl_x b WHERE exam_group='jpx' AND subject='chemistry'
) ab 
GROUP BY id LIMIT 40


下一个查询应该以简单的方式返回相同的数据:

SELECT * 
FROM tbl_x 
WHERE 
    id IN (11,20,30)
    OR (exam_group='jpx' AND subject='chemistry')
ORDER BY id IN (11,20,30) DESC, id
LIMIT 40;

它可以工作,但仍然非常类似于我自己的查询。如果我将LIMIT设置为10,那么它将不会得到ID为(11,20,30)的查询。我只得到了顺序ID 1-10。我通过addorderby语句编辑了我的答案。请看这里的简化示例:它起作用了。谢谢。