Select 条件列但获取子查询返回的值超过 1 个
Select conditional column but getting subquery returned more than 1 value
我有一个包含销售信息的数据库。有 CustomerID、FirstName、LastName 和 State 列。在州内只有加利福尼亚州和德克萨斯州。我需要住在加利福尼亚的人显示他们的名字,而住在德克萨斯州的人显示他们的姓氏。
执行以下程序:
IF (SELECT State FROM Customer) = 'California'
(SELECT FirstName FROM Customer)
ELSE
(SELECT LastName FROM Customer)
但是有一个错误,在我看来
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression
请帮忙
您似乎想要一个条件表达式,case
,表达式:
SELECT
CASE WHEN STATE = 'California' THEN FirstName ELSE LastName END
FROM Customer
注意事项:
- 您想在 SQL 中尽可能多地使用基于集合的逻辑。并避免程序逻辑(IF/THEN/END).
- 如果您尝试将单个值与 returns 多个值的查询结果进行比较,您总是会遇到错误。这是您需要
WHERE
子句 and/or 和 TOP 1
后跟 ORDER BY
. 的地方
- 事实上,您几乎总是希望同时使用
WHERE
子句来过滤结果,并使用 ORDER BY
来对结果进行排序。您可能想重新访问关于这方面的 SQL 教程。
我有一个包含销售信息的数据库。有 CustomerID、FirstName、LastName 和 State 列。在州内只有加利福尼亚州和德克萨斯州。我需要住在加利福尼亚的人显示他们的名字,而住在德克萨斯州的人显示他们的姓氏。
执行以下程序:
IF (SELECT State FROM Customer) = 'California'
(SELECT FirstName FROM Customer)
ELSE
(SELECT LastName FROM Customer)
但是有一个错误,在我看来
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression
请帮忙
您似乎想要一个条件表达式,case
,表达式:
SELECT
CASE WHEN STATE = 'California' THEN FirstName ELSE LastName END
FROM Customer
注意事项:
- 您想在 SQL 中尽可能多地使用基于集合的逻辑。并避免程序逻辑(IF/THEN/END).
- 如果您尝试将单个值与 returns 多个值的查询结果进行比较,您总是会遇到错误。这是您需要
WHERE
子句 and/or 和TOP 1
后跟ORDER BY
. 的地方
- 事实上,您几乎总是希望同时使用
WHERE
子句来过滤结果,并使用ORDER BY
来对结果进行排序。您可能想重新访问关于这方面的 SQL 教程。