在PHP中,如何在不同的表中使用多个“IN”语句查询mySQL数据库?

时间:2011-09-12 14:26:52

标签: mysql nested

我试图找出如何有两个“IN”语句。

虽然我不知道如何使用这两个嵌套的select语句,但我试图得到这样的东西。

$query_row=mysql_query(
    "SELECT DISTINCT * FROM table_a WHERE field_1 IN 
        (SELECT field_1 FROM table_b WHERE field_2 = $field_2), 
        (SELECT field_3 FROM table_c WHERE field_4 = $field_4)
        ORDER BY field_5 DESC
        ");

如果我删除其中一个(SELECT...位,它可以正常工作,但尝试将两者都放在一起。

表a在表B和C中具有匹配值:分别为字段2和4。

如何让它发挥作用?

2 个答案:

答案 0 :(得分:2)

取决于您是否要测试IN中的一个或两个:

WHERE field_1 IN (SELECT field_1 FROM table_b WHERE field_2 = $field_2) AND/OR field_1 IN (SELECT field_3 FROM table_c WHERE field_4 = $field_4) ...

答案 1 :(得分:2)

您可以尝试使用UNION:

SELECT DISTINCT * 
    FROM table_a 
    WHERE field_1 IN (SELECT field_1 FROM table_b WHERE field_2 = $field_2 
                      UNION 
                      SELECT field_3 FROM table_c WHERE field_4 = $field_4)
    ORDER BY field_5 DESC