这就是我遇到的问题。我有两个单独的表TableA和TableB,TableA有四个列,TableB有两个列。 TableA仅包含ID,而TableB仅包含ID和字符串。所以我需要来自TableB的字符串,但要基于来自TableA的ID
例如:
TableA:
+------+------+-------+------+
| m_id | appi | mainy | desy |
+------+------+-------+------+
| 1 | 6 | 9 | 13 |
+------+------+-------+------+
| 2 | 7 | 10 | 14 |
+------+------+-------+------+
| 3 | 8 | 12 | 15 |
+------+------+-------+------+
TableB
+------+-------+
| t_id | str |
+------+-------+
| 6 | dude |
+------+-------+
| 10 | bro |
+------+-------+
| 9 | lol |
+------+-------+
| 14 | homie |
+------+-------+
基于上面的表,我需要根据来自TableB的ID(例如SELECT str FROM TableB WHERE t_id = (Ids from TableA WHERE m_id=1)
)找出实际的字符串。因此,我的预期数据应为'dude'和'lol',因为m_id=1
具有两个ID 6和9,而TableB中的那些ID具有字符串'dude'和'lol'。真的很感谢您的帮助,如果有任何混淆,请原谅。我们会尽力解决这个问题。
答案 0 :(得分:3)
您可以使用TableB到TableA的简单JOIN
来执行此操作,其中TableB中的t_id
必须是appi
,mainy
或{{1 }}来自TableA的给定desy
:
m_id
输出:
SELECT b.str
FROM TableB b
JOIN TableA a ON b.t_id IN (a.appi, a.mainy, a.desy)
WHERE a.m_id = 1
答案 1 :(得分:1)
您可以将exists
用于这种类型的逻辑:
select b.str
from tableb b
where exists (select 1
from tablea a
where a.m_id = 1 and
b.t_id in (a.appi, a.mainy, a.desy)
);