以下片段使用MySQL變量技巧爲每個CID的每行分配一個數字。爲了保持示例簡單,我已經將返回的行數限制爲每個CID 2。
select cid
, qid
, text
from (
select if(@last_cid = cid, @rn := @rn + 1, @rn := 1) as rn
, (@last_cid := cid)
, cid
, qid
, text
from YourTable yt
cross join
(select @rn := 0, @last_cid := -1) r
) as SubQueryAlias
where rn < 3;
數據設置:
create table YourTable (QID int, TEXT varchar(50), CID int);
insert YourTable values
(1, 'hi', 1),
(1, 'hi', 1),
(2, 'hi', 1),
(2, 'hi', 1),
(3, 'hi', 2),
(4, 'hi', 2),
(4, 'hi', 2),
(5, 'hi', 3);
這將返回達到每CID兩行:
+------+------+------+
| cid | qid | text |
+------+------+------+
| 1 | 1 | hi |
| 1 | 1 | hi |
| 2 | 3 | hi |
| 2 | 4 | hi |
| 3 | 5 | hi |
+------+------+------+
還有什麼你從 「已經準備串$ CID」 有分開? – Havelock
Whay我所做的是「SELECT * FROM questions q1 WHERE cid =(SELECT cid FROM questions q2 WHERE q2.cid IN($ cids)Group BY q2.cid)ORDER BY q1.qid LIMIT 3」,但是這不會上班。 – nickbusted
我收到以下錯誤:「#1242 - 子查詢返回多於一行」 – nickbusted