| one | two |
-------------
| A | 1 |
| A | 2 |
| B | 1 |
| B | 3 |
| C | 1 |
| C | 4 |
我想在查询的任何列中都没有重复,所以标准
SELECT DISTINCT one,two FROM table;
orSELECT * 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 但可以很好地为第二列选择所有1,这意味着第二个 GROUP BY 将折叠它拥有 1 行!
我知道重复检查的顺序会对返回的确切行产生影响——不用担心——我只想要一个具有最少相似行的行的良好横截面。