MySQL查询从一个表中选择一组ID,具体取决于第二个表上的查询

时间:2014-05-21 19:05:33

标签: mysql sql join

我确信如果我知道要使用正确的词语,这将很容易谷歌,但我已经尝试过但没有想出任何东西:道歉,如果这是一个常见的问题,那么。

我有一个表,列出了一组记录,可以是4种类型之一。

TABLE_1:

+-------+------------+------+
| id    | value      | type |   
+-------+------------+------+
| 1     |          x | 1    | 
| 2     |          y | 1    |  
| 3     |          z | 2    |  
| 4     |          a | 3    |      
+-------+------------+------+

我有另一个表引用该表的id并存储数据

TABLE_2

+-------+------------+------+
| id    | table_1_id |value |   
+-------+------------+------+
| 1     |          4 | A    | 
| 2     |          2 | B    |  
| 3     |          3 | C    |  
| 4     |          2 | D    |      
+-------+------------+------+

我想写一个影响的查询:

"查找表1中类型1的所有记录,记录这些记录的ID,并找到表2中' table_1_id'的所有记录。它匹配那组ID中的一个。"

在上面非常过于简单的表示例中,该示例将导致查询返回表2中的ID为2和4的记录

2 个答案:

答案 0 :(得分:2)

听起来像是在寻找IN

select * 
from table2
where table_1_id in (select id from table1 where type = 1)

或许你可以JOIN表:

select t2.*
from table2 t2
    join table1 t1 on t2.table_1_id = t1.id
where t1.type = 1

加入表格可能会导致重复记录。取决于您的需求。

答案 1 :(得分:1)

SELECT t1.value,t1.type,t2.value FROM table1 t1,table2 t2 WHERE t1.id = t2.table_1_id AND t1.type = 1;