假设我们有一个名为"Persons"的表和另一个名为"Product_Orders"的表.我们将分别给出"p"和"po"的表别名.
现在我们要列出"Ola Hansen"负责的所有订单.
我们使用以下SELECT语句:
SELECT po.OrderID, p.LastName, p.FirstName
FROM Persons AS p, Product_Orders AS po
WHERE p.LastName='Hansen' AND p.FirstName='Ola'
Run Code Online (Sandbox Code Playgroud)
我与OrderID混淆,因为它与任何类似的东西都没有比较.
SELECT po.OrderID, p.LastName, p.FirstName
FROM Persons AS p, Product_Orders AS po
WHERE p.LastName='Hansen' AND p.FirstName='Ola'
AND po.OrderID = p.OrderID.
Run Code Online (Sandbox Code Playgroud)
我错了吗?
这里展示的是一个连接,但是您正在使用的网站正在教您过时的隐式连接语法(使用逗号).我建议不要使用这种语法.而是使用JOIN关键字.
我检查了网站,发现原始示例代码是什么(您的问题没有说清楚):
SELECT po.OrderID, p.LastName, p.FirstName
FROM Persons AS p,
Product_Orders AS po
WHERE p.LastName='Hansen' AND p.FirstName='Ola'
Run Code Online (Sandbox Code Playgroud)
他们忘了添加连接条件!
我会用JOIN这样的方式写它:
SELECT po.OrderID, p.LastName, p.FirstName
FROM Persons AS p
JOIN Product_Orders AS po
ON po.PersonId = p.Id
WHERE p.LastName = 'Hansen' AND p.FirstName = 'Ola'
Run Code Online (Sandbox Code Playgroud)
现在您可以清楚地看到po.PersonId = p.Id条件指定了两个表之间的关系,并显示了它们应该如何连接.使用JOIN关键字的众多优点之一是难以忘记编写连接条件,并且当它丢失时很明显.
你应该避免使用w3schools.com作为教程.该网站包含许多错误和不良做法.