MySql如果然后查询
问题描述:
是否有可能在mySql中使用if/then语句?我正在查看JOIN表中列的值,并根据该列的值对结果进行排序。MySql如果然后查询
我对不起尝试:
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()
答
您可以使用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
实际上将获取的每一行,计算每一个随机数,排序它们,然后最后返回第一行。所以对于合理大小的数据来说,它会很慢(并且会导致临时表)。