我有2张桌子。
TABLE_1
category_id name parent_id
1 test 0
2 test1 1
3 test2 1
4 test3 1
5 test4 2
.
TABLE_2
pro_id category_id name
1 2 prod1
2 2 prod2
3 3 prod3
4 5 prod4
.
.
.
我需要这样做
category_id
s parent_id = given...
(说'1')where in (all the ids returned from 1) )
的另一个表格中查询... 在示例中应为where in ('2,3,4')
输出
表2中的pro_id
(本例中为1,2,3)的所有字段。
尝试了这个..(希望这会起作用:))
select * from TABLE_2
where category_id in (select category_id from TABLE_1 where parent_id = 1)
但没有结果。
我本可以在PHP脚本中完成所有这些操作。但是有一个分页问题。所以我想让它在一个查询中工作。
那么可以这样做吗?从查询中获取结果并在单个查询中的其他查询中使用它?如果是这样,那么我将非常感谢你的帮助。
答案 0 :(得分:2)
IN是一个非常慢的运算符,因为SQL通常将它计算为由“OR”分隔的一系列WHERE子句(WHERE x = Y OR x = Z OR ...)。
所以试试这个
SELECT t2.*
FROM TABLE_1 t1
LEFT JOIN TABLE_2 t2 ON t2.category_id = t1.category_id
WHERE t1.parent_id = 1
答案 1 :(得分:2)
这很奇怪..但我提供的查询正在工作...... :) :)
select * from TABLE_2 where category_id in (select category_id from TABLE_1 where parent_id = 1)
无论如何,谢谢你们......
答案 2 :(得分:1)
您必须在WHERE子句中提供字段。
select * from TABLE_2 where category_id in (...)
答案 3 :(得分:1)
SELECT t2.*
FROM TABLE_1 t1
JOIN TABLE_2 t2 ON
t2.category_id = t1.category_id
WHERE t1.parent_id = 1
但是你上面写的查询应该有效。