2012-03-05 100 views
1

我有類似下面的表格:MYSQL +選擇2列 - 1是唯一

domainname english 
www.a.com  apples 
www.a.com  peaches 
www.b.com  oranges 
www.b.com  banana 
www.c.com  watermelon 

我想選擇域名和英文,但其中域名是唯一的隨機列表。例如:

www.a.com  apples 
www.b.com  banana 
www.c.com  watermelon 

結果需要隨機每次。

我讀過關於這個網站的其他例子,嘗試以下,但它並沒有給域名的問題的唯一列表 - 例如:他們出現兩次或以上:

SELECT DISTINCT(domainname),english FROM table WHERE domainname ORDER BY RAND(); 

Hopeing有人可以給些諮詢。

歡呼

+0

你在桌子上有多少個領域?只有2個或更多..? – 2012-03-05 07:49:19

回答

3

嘗試此查詢:

SELECT * FROM (
    SELECT * FROM table ORDER BY RAND()) t 
GROUP BY 
    domainname 
+0

thankyou ...非常棒! – Adam 2012-03-05 07:58:45

0

嘗試此查詢不同不與多列名工作

SELECT DISTINCT(domainname) FROM table WHERE domainname ORDER BY RAND(); 
+0

是的,但是我想在同一個查詢中選擇第二個列名... – Adam 2012-03-05 07:50:49

+0

Distinct不支持多列。你需要使用group by子句 – 2012-03-05 08:01:04

0

如果english列是表的PRIMARY KEY(或有一個UNIQUE約束),你也可以使用這個:

SELECT t.* 
FROM 
     (SELECT DISTINCT domainname 
     FROM tableX 
    ) AS dd 
    JOIN 
     tableX AS t 
    ON t.english = 
     (SELECT tt.english 
     FROM tableX AS tt 
     WHERE tt.domainname = dd.domainname 
     ORDER BY RAND() 
     LIMIT 1 
     )