繁体   English   中英

一选二表,无联接

[英]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。 这两个表之间没有关系。 起初,我认为这不会奏效,但确实可以。

结果是一行,其中包含usernamecompanyname值。

在我看到这种解决方案之前,我会先使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM