带子查询的mysql“IN”条件

时间:2013-08-26 09:16:34

标签: mysql subquery conditional-statements

我需要执行以下操作:

SELECT * FROM mp_sizes 
WHERE size_id IN(SELECT size_ids FROM mp_size_categories 
WHERE category_id = '3' AND sub_category_id = '5');

当我运行以下查询时,它会返回3条记录。

SELECT * FROM mp_sizes WHERE size_id IN(3,2,4);

当我运行子查询时,它会向我显示正确的结果。

SELECT size_ids FROM mp_size_categories 
WHERE category_id = '3' AND sub_category_id = '5';

上面的查询给出了结果3, 2, 4

但是当我在子查询中使用它时,它只返回一条记录。它仅返回第一个值(3)的大小细节。

如何获得所有3种尺寸(3,2,4)的结果?

2 个答案:

答案 0 :(得分:0)

您是否使用JOIN尝试过? (这更快)

 SELECT * FROM mp_sizes, mp_size_categories
 WHERE size_id = size_ids AND category_id = '3'
 AND sub_category_id = '5';

答案 1 :(得分:0)

我认为您应该使用以下查询与加入来获得完全相同的结果,而不是使用嵌套查询,它应该比子查询更快:

select * from mp_sizes as mpsizes 
join mp_size_categories as mpsizecategories 
on mpsizes.size_id = mpsizecategories.size_ids 
where mpsizecategories.category_id = '3' 
AND mpsizecategories.sub_category_id = '5';