MySql如果再查询

时间:2011-01-06 20:48:47

标签: mysql

是否可以在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()

1 个答案:

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