是否可以在mySql中使用if / then语句?我想检查JOIN表中列的值,并根据该列的值对结果进行排序。
我的抱歉尝试:
SELECT t1.*
FROM t1
JOIN t2 ON t1.ID = t2.ID
WHERE t1.ID = '888'
if(t2.col1 = '1') ORDER BY t1.tid ASC
else ORDER BY RAND()
答案 0 :(得分:1)
您可以使用CASE
:
ORDER BY
CASE WHEN t2.col1 = 1 THEN t1.tid ELSE rand() END ASC
请注意,这可能不太好,因为MySQL无法使用订单t1.tid
。
你还应该知道你可以通过多种方式订购,这样可能会做你想做的事情:
ORDER BY t1.tid ASC, RAND()
另外,你应该记住ORDER BY RAND() LIMIT 1
实际上会获取每一行,为每个行计算一个随机数,对它们进行排序,然后最后只返回第一行。因此,对于合理大小的数据,它将会很慢(并且还会导致临时表)。