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 教程。