1

我有一张桌子:

items
item_id|cat_id|name
1      |2     |item_1
2      |2     |item_2
3      |1     |item_3
4      |3     |item_4
5      |2     |item_5
6      |3     |item_6

我写了这个查询:

SELECT * FROM items WHERE cat_id IN (2,3);

如何为两个 cat_id 返回最多/至少4 行(导致最多/至少8 行)?

4

3 回答 3

3
(SELECT * FROM items WHERE cat_id = 2 LIMIT 4)
UNION ALL
(SELECT * FROM items WHERE cat_id = 3 LIMIT 4);
于 2012-09-05T22:19:22.807 回答
3

m4573r 很接近:这是正确的 SQL:

(SELECT * FROM items WHERE cat_id = 2 LIMIT 4)
UNION ALL
(SELECT * FROM items WHERE cat_id = 3 LIMIT 4);

没有括号,最后的 LIMIT 应用于联合,而不是子查询。

于 2012-09-06T06:25:33.667 回答
-1

更轻松 :

SELECT * FROM items WHERE cat_id = (2,3) LIMIT 4;

完毕

于 2012-09-05T22:29:30.893 回答