IF EXISTS排序

时间:2009-11-20 08:43:51

标签: sql mysql

如果实际存在,是否有按列排序的方法?

ie:SELECT * ORDER BY IF(EXISTS(order_column), order_column ASC, name_column DESC)

谢谢!

4 个答案:

答案 0 :(得分:2)

您可以使用ISNULL而不是

ORDER BY
    ISNULL(order_column, name_column)

不确定如何添加DESC或ASC ......

答案 1 :(得分:1)

这是我未经测试的猜测:

ORDER BY IF(ISNULL(order_column), "", order_column) ASC, name_column DESC

如果order_column为NULL,则将替换空字符串,这不会影响排序。如果它不是NULL,它将在名称列之前排序。

如果Mysql不允许你在ORDER BY中使用表达式,你总是可以在SELECT中创建一个“人工”列:

SELECT 
  IF (ISNULL(order_column), "     ", order_column) 
     AS my_order_column, 
  name_column 
FROM table 
ORDER BY my_order_column ASC, name_column DESC.

答案 2 :(得分:0)

不,EXISTS只能与子查询和WHERE子句一起使用。你可以更具体一点吗? “现有专栏”是什么意思?

答案 3 :(得分:0)

执行此操作的最佳方法是创建一个表达式,该表达式将select存在作为select查询的一部分进行评估。您可以使用表达式return order_column或name_column

实现取决于您正在使用的SQL,但在这里您可以默认我们IIf(...)但您可能需要检查null