【发布时间】:2019-02-09 14:23:33
【问题描述】:
我有 3 个数据库表:site、paper 和 linkTable。
idSite SiteName
--------------------
1 AAA
2 BBB
3 CCC
idPaper PaperName
------------------------
1 Paper1
2 Paper2
3 Paper3
4 Paper4
idLinkTable idSite idPaper
----------------------------------
1 1 1
2 1 3
3 2 1
我想为idSite=1显示所有没有idPaper=1,idPaper=3的论文;
同样对于idSite=2,需要所有没有idPaper=1 的论文。这是所需的输出:
SiteName PaperName
------------------------
AAA Paper2
AAA Paper4
BBB Paper2
BBB Paper3
BBB Paper4
我试过这段代码:
SELECT s.SiteName AS Site, p.PaperName AS Paper
FROM site s
INNER JOIN linkTable l ON s.idSite = l.idSite
INNER JOIN paper p ON l.idPaper != p.idPaper;
这是我使用此代码时的结果:
SiteName PaperName
------------------------
AAA Paper2
AAA Paper3
AAA Paper4
AAA Paper1
AAA Paper2
AAA Paper4
BBB Paper2
BBB Paper3
BBB Paper4
【问题讨论】:
-
SELECT DISTINCT? -
@mitri stackoverflow.com/a/52168294/2469308 适合你吗?您需要所有可能的组合,除了
linkTable中的组合?
标签: mysql select multiple-tables cross-join