如何解决选择条件列但让子查询返回超过 1 个值
我有一个包含销售信息的数据库。有 CustomerID、FirstName、LastName 和 State 列。州内只有加利福尼亚州和德克萨斯州。我需要住在加利福尼亚的人显示他们的名字,而住在德克萨斯州的人显示他们的姓氏。
执行以下程序:
IF (SELECT State FROM Customer) = 'California'
(SELECT FirstName FROM Customer)
ELSE
(SELECT LastName FROM Customer)
子查询返回了 1 个以上的值。当子查询跟随 =、!=、、>= 或当子查询用作表达式时,这是不允许的
请帮忙
解决方法
您似乎想要一个条件式 case
表达式:
SELECT
CASE WHEN STATE = 'California' THEN FirstName ELSE LastName END
FROM Customer
注意事项:
- 您希望在 SQL 中尽可能多地使用基于集合的逻辑。并避免程序逻辑(IF/THEN/END)。
- 如果您尝试将单个值与返回多个值的查询结果进行比较,您总是会得到错误。这就是您需要
WHERE
子句和/或TOP 1
后跟ORDER BY
的地方。 - 实际上,您几乎总是希望同时使用
WHERE
子句来过滤结果,并使用ORDER BY
对它们进行排序。您可能想重新访问有关此教程的 SQL 教程。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。