假设我们有下面这个名为
meals
的表:
| meal | stars | ----------------- | steak | 1 | | steak | 2 | | fish | 4 | | fish | 4 | | salad | 5 |如何获取同一道菜,但星级不同的记录?我需要只有星级不同的记录。 上述表的结果应该如下:
| meal | stars | ----------------- | steak | 1 | | steak | 2 |我尝试了以下查询:
SELECT DISTINCT t1.*
FROM meals t1
INNER JOIN meals t2 ON t1.meal = t2.meal
AND t1.stars <> t2.stars;
但是这样做会消耗大量时间和显著的内存。
我的表的实际大小为:
SELECT pg_size_pretty(pg_relation_size('table_name')); pg_size_pretty ---------------- 2295 MB
所以我需要想出其他办法,请求您的帮助!