Mysqli“IN”运算符动态和静态值

时间:2018-05-30 11:05:08

标签: php mysql mysqli

实际上我正在尝试从id为219且id与查询匹配的列中获取结果。

SELECT *
FROM `table1`
WHERE `id` IN ('219', SELECT `id` FROM `table2` WHERE `parent_id`='219')

我想使用id 219并一起查询,因此查询将提取更多的ID。但它不适合我。

2 个答案:

答案 0 :(得分:3)

您可以尝试此版本:

SELECT *
FROM table1
WHERE id = 219 OR id IN (SELECT id FROM table2 WHERE parent_id = 219);

您的问题具有递归分层查询的风格,我们可能会在某种程度上进行连接。如果您需要更复杂的输出,那么您应该更新您的问题。

答案 1 :(得分:1)

根据我的经验,OR条款未在MySQL中得到很好的优化。另一种选择是在IN子句下创建子查询以包含'219',也像

SELECT * FROM table1 WHERE id IN (
SELECT id FROM table2 WHERE parent_id = 219 UNION SELECT '219')