我有两个表,客户 [CustomerID, Email]
和历史记录 [CustomerID, BikeID, Checkout, StationIDout, Checkin, StationIDin]。
给定客户的电子邮件,我想查询 History
表并获取包含该电子邮件对应的 CustomerID
的所有行,其中自行车已被退回 ( WHERE Checkin IS NOT NULL
),按最近的 checkin
日期排序。
我尝试了以下查询,但收到错误:
"The multi-part identifier "[email protected]" could not be bound."
[email protected]存在于数据库中。我看到其他帖子解释了它是如何拼写错误或某些列被错误选择的,但我没有看到我的查询执行任何这些操作。我还缺少其他东西吗?
email = "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="83f7e6f0f7dce6eee2eaefc3f7e6f0f7adecf1e4" rel="noreferrer noopener nofollow">[email protected]</a>";
sql = string.Format(@"
SELECT BikeID, Checkout, StationIDout, Checkin, StationIDin
FROM History INNER JOIN
Customers ON Customers.CustomerID = History.CustomerID
AND Customers.Email = {0}
WHERE Checkin IS NOT NULL
ORDER BY Checkin DESC", email);
最佳答案
缺少字符串引号:
sql = string.Format(@"
SELECT BikeID, Checkout, StationIDout, Checkin, StationIDin
FROM History INNER JOIN
Customers ON Customers.CustomerID = History.CustomerID
AND Customers.Email = '{0}'
^ ^
WHERE Checkin IS NOT NULL
ORDER BY Checkin DESC", email);
但不要使用 concat 或 format,而是使用参数
关于SQL JOIN 多部分标识符错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38045309/