mysql第二优先级where子句

时间:2015-03-03 18:10:18

标签: php mysql

例如,我有一个表用户,列'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查询中?

2 个答案:

答案 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