Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.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_Sql Order By - Fatal编程技术网

MySQL如何限制第一个;“订购”;结果

MySQL如何限制第一个;“订购”;结果,mysql,sql-order-by,Mysql,Sql Order By,我有以下sql查询: "SELECT id, case, value FROM tbl1 WHERE (case > '100' OR case is null) ORDER BY case DESC, value DESC" 结果是这样的: 例如,它给出了100个设置了“case”的结果。“case”为空的500 现在我只需要设置“case”的20个第一个结果和“case”为空的100个结果 如果我这样做: "SELECT id, case, value FROM tbl1

我有以下sql查询:

"SELECT id, case, value 
FROM tbl1 
WHERE (case > '100' OR case is null) 
ORDER BY case DESC, value DESC"
结果是这样的:


例如,它给出了100个设置了“case”的结果。“case”为空的500

现在我只需要设置“case”的20个第一个结果和“case”为空的100个结果

如果我这样做:

"SELECT id, case, value 
FROM tbl1 ... 
ORDER BY case DESC,value DESC 
LIMIT 0,120"

它给我所有设置了“case”的值。。。但是我只想要20个。

你最好联合两个查询

SELECT id, case, value 
FROM tbl1 
WHERE CASE IS NOT NULL
LIMIT 20
UNION
SELECT id, case, value 
FROM tbl1 
WHERE CASE IS NULL
ORDER BY case DESC
LIMIT 100

最好是联合2个查询

SELECT id, case, value 
FROM tbl1 
WHERE CASE IS NOT NULL
LIMIT 20
UNION
SELECT id, case, value 
FROM tbl1 
WHERE CASE IS NULL
ORDER BY case DESC
LIMIT 100
使用

使用


谢谢你的帮助,我得到一个错误,说“不正确的使用联合和订单”,但我想这是因为我使用的是左连接。我会弄明白的。@user2129830我修正了我的答案。ORDER BY只能在结尾处。感谢您的帮助,我收到一个错误消息,说“UNION和ORDER BY的用法不正确”,但我想这是因为我使用的是左联接。我会弄明白的。@user2129830我修正了我的答案。订单只能在最后完成。谢谢您的帮助。我接受了第一个答案,因为两者几乎相同。但也非常感谢你,谢谢你的帮助。我接受了第一个答案,因为两者几乎相同。但也非常感谢你。
SELECT id, case, value 
FROM tbl1 
WHERE case > '100'
ORDER BY case DESC, value DESC
limit 20
union
SELECT id, case, value 
FROM tbl1 
WHERE case is null
ORDER BY case DESC, value DESC
limit 100