SQL联接多部分标识符错误

SQL联接多部分标识符错误,sql,sql-server,tsql,join,Sql,Sql Server,Tsql,Join,我有两个表,Customers[CustomerID,Email]和History[CustomerID,BikeID,Checkout,StationIDout,Checkin,StationIDin] 给定一个客户的电子邮件,我想查询历史记录表,并获取包含该电子邮件对应的客户ID的所有行,其中自行车已被退回(其中Checkin不为NULL),按最近的Checkin日期排序 我尝试了以下查询,但出现错误: “多部分标识符”测试_email@test.org“无法绑定。” 试验_email@te

我有两个表,
Customers[CustomerID,Email]
和History[CustomerID,BikeID,Checkout,StationIDout,Checkin,StationIDin]

给定一个客户的电子邮件,我想查询
历史记录
表,并获取包含该电子邮件对应的
客户ID
的所有行,其中自行车已被退回(
其中Checkin不为NULL
),按最近的
Checkin
日期排序

我尝试了以下查询,但出现错误:

“多部分标识符”测试_email@test.org“无法绑定。”

试验_email@test.org存在于数据库中。我看到其他的帖子解释了它是如何拼写错误或者某个列被错误选择的,但我没有看到我的查询做任何这些。我还缺什么吗

email = "test_email@test.org";

 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,而是使用参数

D'oh!非常感谢。这起作用了。所以我不会忘记,为什么参数周围的单引号可以解决这个问题?因为这是比较字符串的预期TSQL语法(大概是为了让字符串中可以包含空格(和空格))