我在这示例游乐场页面上尝试了W3Schools中的以下SQL。
SELECT CustomerID AS Id, CustomerName AS Customer
FROM Customers
WHERE Customer="Alfreds Futterkiste";但我得到了No value given for one or more required parameters.作为回应。如果我使用CustomerName而不是别名,它就能工作。
这是操场测试页面的失败,还是根本不可能?
发布于 2017-05-04 18:44:02
WHERE子句在select之前进行计算。因此where子句不知道您使用的别名。
因此,您需要使用原始列名:
SELECT CustomerID AS Id, CustomerName AS Customer
FROM Customers
WHERE CustomerName="Alfreds Futterkiste";如果必须在where子句中使用别名,则可以使用子查询或CTE (过高,可能导致查询速度较慢):
SELECT * from (
SELECT CustomerID AS Id, CustomerName AS Customer
FROM Customers
) t WHERE Customer = "Alfreds Futterkiste";发布于 2017-05-04 18:39:44
查看您的代码:
SELECT CustomerID AS Id, CustomerName AS Customer
FROM Customers
WHERE Customer="Alfreds Futterkiste";要对customer表进行别名,可以执行以下操作:
SELECT c.CustomerID AS Id, c.CustomerName AS Customer
FROM Customers c
WHERE c.CustomerName="Alfreds Futterkiste";其中c现在是客户的别名。
不可能在where子句中使用列别名,因为where子句在select之前执行。
发布于 2017-05-04 18:43:09
丑陋,但在更大、更复杂的查询中更方便。
SELECT * FROM
(SELECT CustomerID AS ID, CustomerName AS Customer
FROM Customers) as A
WHERE Customer = "Alfreds Futterkiste";https://stackoverflow.com/questions/43790424
复制相似问题