2009-10-18 118 views
0

我正在嘗試創建一個查詢,它將爲第一個類別選擇一個項目,爲第二個項目選擇兩個項目,爲第三個類別選擇兩個項目,爲其他項目選擇一個項目。MySql隨機類別限制選擇

問題是它必須是一個查詢。我認爲這是可能的,但我無法弄清楚。

+0

你的桌子是什麼樣的? – random 2009-10-18 12:41:43

回答

0

此:

SELECT * 
    FROM (SELECT i.* 
      FROM ITEM i 
     WHERE i.categoryid = 1 
     LIMIT 1), 
     (SELECT i.* 
      FROM ITEM i 
     WHERE i.categoryid = 2 
     LIMIT 2), 
     (SELECT i.* 
      FROM ITEM i 
     WHERE i.categoryid = 3 
     LIMIT 2) 

...會選擇第一類一個項目,兩個項目的第二和2項爲第三類。我會使用UNION ALL而不是UNION,因爲它不會刪除重複項,所以速度更快。在不瞭解數據模型(涉及表格)的情況下,很難說什麼會最好。

+0

Ehm,這是一個交叉連接,它不會返回5行。 – 2009-10-19 06:40:40

1

聽起來像你需要SQL UNION operator。正如在評論中提到的那樣,我們需要知道你的桌子是什麼樣的,以提供更多的幫助。