[英]One select, two tables and no join
我偶然发现以下sql代码(出于示例目的而翻译):
SELECT m.username, c.companyname
FROM member m , company c
WHERE m.id = 5 AND c.id = 10;
表成员的id
为PK。 公司的id
为PK。 这两个表之间没有关系。 起初,我认为这不会奏效,但确实可以。
结果是一行,其中包含username
和companyname
值。
在我看到这种解决方案之前,我会先使用2条sql-一个用于member
,一个用于company
。
此SQL可能带来什么危险?
该SQL等效于:
SELECT m.username, c.companyname
FROM member m CROSS JOIN company c
WHERE m.id = 5 AND c.id = 10;
逗号和cross join
产生笛卡尔乘积。 where
子句大概是从每个表中选择一行。 我更喜欢CROSS JOIN
方法,并且有一个简单的规则:切勿在from
子句中使用逗号。
如果您从多个表中选择而没有加入它们,那么您将得到所有可能的组合。 在这种情况下,由于两面都是pk,因此您只能获得结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.