| one | two |
-------------
| A | 1 |
| A | 2 |
| B | 1 |
| B | 3 |
| C | 1 |
| C | 4 |
クエリのどの列にも繰り返しを入れたくないので、標準
SELECT DISTINCT one,two FROM table;
またはSELECT * FROM table GROUP BY one,two;
は完全には機能しません。これは、すべての行で個別に検索され、この場合は6行すべてが返されるためです。
理想的には、私は探しています:
| one | two |
-------------
| A | 1 |
| B | 3 |
| C | 4 |
PHP(など)では、各列の配列を使用してこれを実行します。以前に列が使用されていた場合は、その行をスキップします。ただし、MySQLでそれを実装する方法はわかりません。
SELECT * FROM (SELECT * FROM table GROUP BY one) GROUP BY two
-ほとんど動作します。ただし、外部クエリではすべての選択肢が表示されないため、有効なオプションが失われます。つまり、内部クエリはA、B、Cに折りたたまれますが、列2のすべての1を選択できます。つまり、2番目のGROUPBYが折りたたまれます。 1列に所有します!
重複チェックの順序が、返される正確な行に影響を与えることはわかっていますが、心配する必要はありません。類似した行が最小限の行の断面が適切である必要があります。