对于我遇到的以下问题,我将不胜感激。 我有以下两个表(tblA和tblB):
tblA
+----+------+
| ID | item |
+----+------+
| 1 | c |
| 2 | a |
| 3 | b |
| 4 | e |
| 5 | d |
| 6 | f |
| 7 | a |
| 8 | c |
+----+------+
和
tblB
+----+----+
| f1 | f2 |
+----+----+
| a | |
| b | a |
| c | a |
| d | |
| e | |
| f | d |
| g | d |
| h | d |
| I | |
+----+----+
我想要实现的是:tblA的item字段中的值出现在tblB的f2字段中我想要选择所有tblB f1值以及来自tblA的ID值,这样我们就可以了得到以下结果:
+----+------+
| ID | item |
+----+------+
| 2 | b |
| 2 | c |
| 5 | f |
| 5 | g |
| 5 | h |
| 7 | b |
| 7 | c |
+----+------+
请注意,来自tblA的ID值2和7虽然具有相同的项值('a'),但仍会在结果中单独出现;这是必需的。
我一直在玩以下想法:
SELECT f1 FROM tblB
WHERE f2 IN(SELECT item FROM tblA)
//
SELECT ID,f1 FROM tblA,tblB
WHERE f2 IN(SELECT item FROM tblA)
//
SELECT x.ID, y.f1
FROM tblA AS x, tblB AS y
WHERE y.f2 IN(SELECT item FROM tblA)
但我很难到达那里。
答案 0 :(得分:2)
我认为这只是一个join
:
select a.id, b.f1
from tblA as a inner join
tblB as b
on b.f2 = a.item
order by a.id;