0

我需要执行以下操作:

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)的结果?

4

2 回答 2

0

你试过用JOIN吗?(更快)

 SELECT * FROM mp_sizes, mp_size_categories
 WHERE size_id = size_ids AND category_id = '3'
 AND sub_category_id = '5';
于 2013-08-26T09:22:47.793 回答
0

而不是使用嵌套查询,我认为您应该将以下查询与Join一起使用以获得完全相同的结果,并且它应该比子查询更快:

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';
于 2013-08-26T09:27:32.513 回答