例如,我有一个表用户,列'count'和列'uid'是主键。
uid | count
1 | 20
2 | 20
3 | 20
4 | 20
4 | 18
我想准确选择一行数小于或等于当前行的行。例如,我有uid = 2的行。
现在我想选择一个小于或等于当前计数值的列,即“20”。我想选择最接近它的一行。
现在我可以选择具有uid = 3或uid = 4的行。在这种情况下,我将要选择具有最低uid值的列,使其大于当前的uid值这是2.因此我希望uid = 3作为我的结果。
如何将它放在mysql查询中?
答案 0 :(得分:1)
这样的事情?
SELECT * FROM users
WHERE count <= 20
ORDER BY count DESC, uid ASC
LIMIT 1
对结果进行排序,以便丢弃20以上的所有内容,然后以递减计数顺序得到其余部分,如果存在相同计数的倍数,则较低的用户ID优先。 LIMIT 1
限制查询只返回一行。
如果您想与现有行进行比较,最简单的方法是:
SELECT * FROM users
WHERE count <= 20
AND uid != 2
ORDER BY count DESC, uid ASC
LIMIT 1
答案 1 :(得分:0)
SELECT * FROM users
WHERE count <= 20
AND uid IN (3,4)
ORDER BY uid ASC,count DESC
LIMIT 1