90

a, b c, dMySQLデータベースのテーブルに列があるとしましょう。私がやろうとしているのは、テーブル内のこれら4つの列すべての個別の値を選択することです(個別の値のみ)。私は次のようなものを試しました:

SELECT DISTINCT a,b,c,d FROM my_table;
SELECT DISTINCT a,b,c,d FROM my_table GROUP BY a,b,c,d;

それらのどれも機能しませんでした。誰かがここで手伝ってもらえますか?

ありがとうございました

列のa, b, c d個別の値が必要です。値の明確な組み合わせではありません

4

6 に答える 6

98

とにかく、質問が古すぎることを私は知っています:

SELECT a, b
FROM mytable
GROUP BY a, b;

これにより、すべての組み合わせが得られます。

于 2015-10-20T13:06:27.027 に答える
58

これは役に立ちますか?

select 
(SELECT group_concat(DISTINCT a) FROM my_table) as a,
(SELECT group_concat(DISTINCT b) FROM my_table) as b,
(SELECT group_concat(DISTINCT c) FROM my_table) as c,
(SELECT group_concat(DISTINCT d) FROM my_table) as d
于 2012-08-29T23:56:27.417 に答える
22

あなたが望む結果を推測するので、多分これはあなたが望むクエリです

SELECT DISTINCT a FROM my_table
UNION 
SELECT DISTINCT b FROM my_table
UNION
SELECT DISTINCT c FROM my_table
UNION
SELECT DISTINCT d FROM my_table
于 2012-08-29T23:55:07.133 に答える
21

それを行う別の簡単な方法はconcat()

SELECT DISTINCT(CONCAT(a,b)) AS cc FROM my_table GROUP BY (cc);
于 2015-09-30T08:29:11.463 に答える
9

どちらのクエリも正しく、正しい答えが得られるはずです。

問題のトラブルシューティングを行うには、次のクエリをお勧めします。

SELECT DISTINCT a,b,c,d,count(*) Count FROM my_table GROUP BY a,b,c,d
order by count(*) desc

つまり、count(*)フィールドを追加します。これにより、groupコマンドを使用して削除された行数がわかります。

于 2012-08-29T23:50:40.247 に答える
9

これにより、すべての列にDISTINCT値が表示されます。

SELECT DISTINCT value
FROM (
    SELECT DISTINCT a AS value FROM my_table
    UNION SELECT DISTINCT b AS value FROM my_table
    UNION SELECT DISTINCT c AS value FROM my_table
) AS derived
于 2015-03-04T22:33:26.140 に答える