2012-03-05 8 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 

結果は毎回ランダムである必要があります。

私はこのサイト上の他の例を読み、次のことを試してみましたが、それはなドメイン名のユニークなリストを与えるものではありませんしました - 例えば:彼らは2回以上表示:

誰かがいくつかを与えることができHopeing
SELECT DISTINCT(domainname),english FROM table WHERE domainname ORDER BY RAND(); 

助言。

歓声

+0

テーブルにいくつのフィールドがありますか?ちょうど2つ以上..? –

答えて

3

複数の列名で作業していません。この文字列で検索してください:

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

よかった...素晴らしい作品! – Adam

0

は、このクエリは別々のお試し

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

はい、動作しますが、同じクエリで2番目の列名を選択したかった... – Adam

+0

Distinctは複数の列でサポートされていません。あなたはそれのためのグループ句を使用する必要があります –

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 
     ) 
関連する問題