关于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
答案 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 表值