我有以下SQL问题。
SELECT *
FROM forum_l.entries
LEFT JOIN forum_h.user
ON forum_l.entries.uid = forum_h.user.userid
ORDER BY username
LIMIT $offSetRows, $nrOfrows;
我得到了我想要的所有值,包括左表中的NULL。但我想按用户名订购。现在我先得到NULL或0。我怎样才能获得空值?
答案 0 :(得分:0)
您可以在CASE
:
ORDER BY
SELECT *
FROM forum_l.entries
LEFT JOIN forum_h.user
ON forum_l.entries.uid = forum_h.user.userid
ORDER BY CASE WHEN username IS NULL OR username = '' THEN 1 ELSE 0 END ASC,
username ASC
LIMIT $offSetRows, $nrOfrows;
我认为“NULL或0”表示NULL
或长度为0的用户名。
答案 1 :(得分:0)
最简单的方法是使用支持NULLS FIRST
子句中ANSI标准ORDER BY
语法的数据库。除此之外,您可以使用条件表达式明确地执行此操作:
ORDER BY (CASE WHEN username IS NULL THEN 1 ELSE 2 END),
username
在MySQL中,您可以将其简化为:
ORDER BY (username IS NULL) DESC, username
我不确定你的意思是“0”,因为username
可能是一个字符串。但是,您可以使用相同的方法将任何值放在第一位或最后一位。