2012-03-05 80 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 
     )