如果实际存在,是否有按列排序的方法?
ie:SELECT * ORDER BY IF(EXISTS(order_column), order_column ASC, name_column DESC)
谢谢!
答案 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