仅使用笛卡尔积的等效SQL查询

时间:2013-04-10 17:26:17

标签: sql sql-server

给出3个表a:{id, name_eng}, b: {id, name_spa} and c: {id, name_ita} 这是给定的一个等效的“产品笛卡儿式查询”:

select
    a.name_eng
    b.name_spa
    c.name_ita
from
    a inner join b on a.id = b.id
    left outer join c on a.id = c.id

1 个答案:

答案 0 :(得分:1)

我不知道你想要什么,笛卡尔产品就是这样:

SELECT  a.name_eng
        b.name_spa
        c.name_ita
FROM a
CROSS JOIN b
CROSS JOIN c

或隐含的方式:

SELECT  a.name_eng
        b.name_spa
        c.name_ita
FROM a,b,c

如果您希望以前的查询用笛卡尔积编写(为什么??),那么这应该(在SQL Server 2000上):

SELECT  a.name_eng
        b.name_spa
        c.name_ita
FROM a,b,c
WHERE a.id = b.id 
AND a.id *= c.id

如果我对“why ??”不够清楚,你不应该使用隐式连接,因为不推荐使用它们,你应该总是使用正确的显式连接。