我有3张这样的桌子:
现在如何根据tab3(红色)中分配的内容从tab1(蓝色)中获取ID,NAME和TEXT-但仅(如本例所示)何时给tab1.ID = 1我分配了2222和1111在tab3中。像这样
SELECT DISTINCT
e.ID, e.NAME, e.TEXT
FROM
tab1 AS e
JOIN
tab3 AS c
WHERE
e.ID = c.tab1ID
AND (c.tab2name = 1111 AND c.tab2name = 2222)
但是它不起作用,我也不知道如何正确编写它。
答案 0 :(得分:0)
此子句不可能满足:(c.tab2name = 1111 AND c.tab2name = 2222)
。您基本上是在寻找具有两个值的单个记录。您需要查找的是两个单独的记录的存在。试试这个:
SELECT DISTINCT
e.ID, e.NAME, e.TEXT
FROM
tab1 AS e
WHERE e.ID IN (
SELECT tab1ID
FROM tab3
WHERE tab2name = 1111)
AND e.ID IN (
SELECT tab1ID
FROM tab3
WHERE tab2name = 2222)
答案 1 :(得分:0)
我想你想要
SELECT e.ID, e.NAME, e.TEXT
FROM tab1S e
WHERE EXISTS (SELECT 1 FROM tab3 c WHERE e.ID = c.tab1ID AND c.tab2name = 1111) AND
EXISTS (SELECT 1 FROM tab3 c WHERE e.ID = c.tab1ID AND c.tab2name = 2222);
您仅从e
中选择列,因此您不需要加入c
。我猜想select distinct
是多余的,因为join
引入了重复。