从第一个表中选择任何内容

时间:2014-08-22 10:51:38

标签: sql sql-server

关于sql语法的快速问题 如果我有3个表(特此提到1,2,3)并希望从table 2,3表中选择所有内容,具体取决于表1中是否存在id,我该怎么做,IE“从中选择”表格1?至于现在,我从table 1选择了所有内容。

SELECT * FROM [Content] pc, [test] Dc, 
[Swg] Swg where pc.Id=Dc.Id and pc.Id=Swg.Id  order by pc.Id

5 个答案:

答案 0 :(得分:2)

如果我理解正确,您希望从表格测试和SWG中选择所有内容,即使表格内容中没有匹配项?

如果是这样,一个正确的联接可以解决这个问题:

SELECT
  *
FROM
   Content
      RIGHT JOIN test ON content.ID = test.ID
      RIGHT JOIN SWG ON Content.ID = SWG.ID

如果你正在寻找测试和SWG中的所有内容,但只有在CONTENT中有匹配的ID时,这应该有效:

SELECT 
    test.*
    , SWG.*
FROM
   Content
      JOIN test ON content.ID = test.ID
      JOIN SWG ON Content.ID = SWG.ID

答案 1 :(得分:1)

所以你不想看到表1中的列?

SELECT Dc.*, Swg.*
FROM [Content] pc, [test] Dc, 
[Swg] Swg where pc.Id=Dc.Id and pc.Id=Swg.Id  order by pc.Id

假设pc =表1,dc =表2和swg =表3

答案 2 :(得分:0)

e.g。如果表1是内容(查询中的pc别名):

SELECT Dc.*, swg.*
FROM ....

因此,您必须指定要从中选择的表别名。仅*将选择所有引用表中的所有列

答案 3 :(得分:0)

你可能试过这个

SELECT pc。*,Dc。*,Swg。*     FROM [Content] pc,[test] Dc,     [Swg] Swg其中(pc.Id = Dc.Id或pc.Id = Swg.Id)按pc.Id订购

答案 4 :(得分:0)

Select * from 
T1 left join T2 on T1.id=T2.id 
Where T1.id in (select id from T3 where...etc.)

这样,如果 T1 值与T3中的值匹配而没有获得此,那么您将获得 T1 和匹配 T2 值的所有内容> T3 表值