加入同一列但没有行

时间:2013-09-13 15:05:41

标签: sql sql-server-2008

我有两张桌子。

Table1
ID    Text

Table2
ID    ParentID    Text

我正在尝试使用2个不同的列连接到同一个表两次。我想要Table1.ID = Table2.ID的所有行以及Table1.ID = Table2.ParentID的所有行。我尝试了以下但它没有返回任何行。当我在两个不同的select语句中运行下面的脚本时,每个语句只有一个连接,我得到我想要的结果,但不是在同一个select语句中。关于我做错了什么想法?

SELECT * 
FROM Table 1
JOIN Table2 2 
    on 2.ID = Table1.ID
JOIN Table2 22 
    on 22.ParentID = Table1.ID

3 个答案:

答案 0 :(得分:1)

您只获取表1是父ID和ID的记录......也许您想要:

SELECT 
* FROM Table 1
JOIN Table2 2 on 2.ID = Table1.ID
UNION
SELECT 
* FROM Table 1
JOIN Table2 22 on 22.ParentID = Table1.ID

或者可能是UNION ALL?

答案 1 :(得分:1)

您可以尝试此查询:

SELECT 
    * 
FROM 
    TABLE1, 
    TABLE2 
WHERE 
    TABLE1.ID = TABLE2.ID 
    OR 
    TABLE1.ID = TABLE2.ParentID

答案 2 :(得分:0)

你的走样有点偏。

放手一搏:

SELECT * 
FROM Table 1
JOIN Table2 2 
    on 2.ID = 1.ID
JOIN Table2 22
    on 22.ParentID = 1.ID

你可能仍然因为没有别名而SELECT *出错...我建议SELECT 1.*,甚至做SELECT 1.myColumn, 1.myColumn2等等......