我有一个包含两列的表,我想从该表中选择项目,并根据这两个值中哪一个更高来对它们进行排序。
假设我有列'x'和'y',我有这些条目:
x ; y
1.- 10 ; 12
2.- 5 ; 10
3.- 11 ; 20
我希望订购回复:3,1,2
我知道这不会有帮助,因为它在mysql中没有任何意义,但是表达了我的想法
$query = (mysql_query("SELECT * FROM productos ORDER BY MAX(x, y)"));
我不想在表中为此查询创建一个新变量。
有什么想法吗?非常感谢
答案 0 :(得分:5)
你想在x或y之后对它进行排序,具体取决于哪个更高?
SELECT * FROM products ORDER BY GREATEST(x, y)
但在你的情况下,这是3,2,1因为15(y)高于-5(x)并且还高于第1行中的最大值。所以我有点困惑。
支持NULL并纠正顺序:
SELECT * FROM products ORDER BY GREATEST(COALESCE(x, 0), COALESCE(y, 0)) DESC
如果您需要其他值作为默认值而不是0
,只需将其替换即可。
答案 1 :(得分:2)
Select
*
from
products
order by
Case when x>y then x else y end DESC
答案 2 :(得分:2)
SELECT *
FROM products
ORDER BY GREATEST(x,y) DESC
, LEAST(x,y) DESC
排序的第二部分(最少)是在(12,20)
的行前加(10,20)
行。
由于这两个字段可以有NULL
:
SELECT *
FROM products
ORDER BY GREATEST( COALESCE(x,0), COALESCE(y,0) ) DESC
, LEAST( COALESCE(x,0), COALESCE(y,0) ) DESC ;