MySQL如何限制第一个;“订购”;结果
我有以下sql查询: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
"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