我不认为这应该是那么复杂,但是我在构建查询以从表中提取更高更低值时遇到问题,其中标识符更高。
所以基本上,我有一个包含这个(以及其他内容)的表:
8A 6253.85
8B 6184.64
我想找到8B并获得6184.64的值。
我使用了以下查询:
SELECT * FROM payments WHERE contract = '".$contract."' AND payment LIKE '".$x."%' LIMIT 1
其中$ x是8,但当然得到6253.85,因为它是第一个。
我试过了:
SELECT * FROM payments WHERE contract = '".$contract."' AND payment LIKE '".$x."%' DESC LIMIT 1
这基本上就是我想要做的,但这不起作用(sql错误)。
如果有人能给我一个关于如何确保我总是拉出匹配的“最后”行的快速建议,我将不胜感激。
提前致谢。
答案 0 :(得分:2)
只需添加ORDER BY payment DESC
(在LIMIT
子句之前)。
FROM ...
WHERE ...
AND ...
ORDER BY payment DESC
LIMIT 1
(对于每一行,LIKE谓词返回TRUE或FALSE(或NULL),并且不能用于对更高和更低值进行排序,除非您有“已知”值的特殊情况。)