我有如下表:汇总基于一个共同的列值从同一个表中唯一的一对列值的
my_table
------------------------
| common_id | uniq_val |
------------------------
| 1 | foo |
------------------------
| 1 | bar |
------------------------
我想总价值从它使得生成的查询看起来像:
DESIRED RESULT
---------------------------------------
| common_id | uniq_val_1 | uniq_val_2 |
---------------------------------------
| 1 | foo | bar |
---------------------------------------
OR
---------------------------------------
| common_id | uniq_val_1 | uniq_val_2 |
---------------------------------------
| 1 | bar | foo |
---------------------------------------
所以我写查询:
SELECT t1.common_id, t1.uniq_val, t2.uniq_val
FROM my_table t1 JOIN my_table AS t2
ON t1.common_id=t2.common_id
WHERE t1.uniq_val!=t2.uniq_val;
导致
RESULTING SELECT
---------------------------------------
| common_id | uniq_val_1 | uniq_val_2 |
---------------------------------------
| 1 | foo | foo |
---------------------------------------
| 1 | bar | bar |
---------------------------------------
但我只需要这些列中的一个,所以我应该能够做一个GROUP BY t1.common_id,如:
SELECT t1.common_id, t1.uniq_val, t2.uniq_val
FROM my_table t1 JOIN my_table AS t2
ON t1.common_id=t2.common_id
WHERE t1.uniq_val!=t2.uniq_val
GROUP BY t1.common_id;
不幸的是这将返回错误:
ERROR: column "t1.uniq_val" must appear in the GROUP BY clause or be used in an aggregate function
任何人都可以指出我的逻辑错误吗?
将分别common_id值始终只有2个独特的价值?有些人有2人,其他人有3人或4人? –