我有一个有3个表的数据库;tbl客户,tbl图书,tbl灯光。
我想从customers表中查找客户的姓氏(lname),其中客户没有出现在bookings表中。它应该只返回三个名称,但每个名称返回10次。bookings表中有10条记录,因此我认为命令返回的是正确的名称,但不是一次。。。
我试过:
SELECT tblCustomers.LName
FROM tblCustomers, tblBookings
WHERE tblCustomers.CustID
NOT IN (SELECT CustID FROM tblBookings)
如何只返回名称的一个示例,而不是名称重复10次?
2条答案
按热度按时间kzipqqlq1#
您正在对这两个表进行交叉联接。
仅在以下情况下使用:
eblbsuwk2#
(隐式)
cross join
在outer查询的bookings表上进行查询是没有意义的,它将乘以customer行。另外,我建议
not exists
用于过滤而不是not in
:它通常表现得更好-有了正确的索引,它是null
-安全:为了提高性能,请确保在
tblBookings(CustID)
-如果您声明了正确的外键,它应该已经存在了。