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实际上将获取的每一行,计算每一个随机数,排序它们,然后最后返回第一行。所以对于合理大小的数据来说,它会很慢(并且会导致临时表)。