sql - SQL 表底部的 NULL 值 - SQL Server 2000
问题描述
我有一张包含姓名和电子邮件信息的表格。我必须将包含 NULL 电子邮件值的行放在表的底部,但是当我使用 SELECT DISTINCT 子句时无法这样做。这是我当前的语法:
SELECT
DISTINCT
user_index,
name,
email
FROM table1
ORDER BY (CASE WHEN email IS NULL THEN 1 ELSE 0 END)
但每当我尝试执行此查询时,我都会收到错误消息:
ORDER BY items must appear in the select list if SELECT DISTINCT is specified.
如果我取出 DISTINCT 子句,则此查询有效,但在这种情况下是必要的。有小费吗?
解决方案
改为使用聚合:
SELECT user_index, name, email
FROM table1
GROUP BY user_index, name, email
ORDER BY (CASE WHEN email IS NULL THEN 1 ELSE 0 END);
这在功能上与您的问题相同。distinct
但是,SQL 引擎不会对使用列的表达式感到困惑。
推荐阅读
- javascript - 为什么我的生成器没有产生从下一个方法传入的参数值?
- php - Microsoft Dynamics crm 按 accountid 和通过 api 联系的姓名过滤
- amazon-web-services - AWS Auth 参数在多个环境中被覆盖
- php - 当我们从其他支持者调用 url 时如何防止它不应该在 laravel 中附加我当前的 url
- reactjs - 带异步的 React-router-dom 保护路由
- html - 保持文本在容器内垂直居中
- azure - 将 Azure SQL 数据库与 Azure Cosmos DB MongoDB API 同步
- nginx - nginx $upstream_status 和 $status 有什么区别
- java - 为什么在将 Integer 转换为 double 时计算函数不给出错误?
- python - 如何结合这两个代码?(python图像查看器+鼠标拖动图像ROI裁剪)