使用sql查询忽略表中的重复记录(不删除)

0pizxfdo  于 2021-07-26  发布在  Java
关注(0)|答案(4)|浏览(342)
1         Banana           1$
1         watermelon       1$
1         Apple            1$
2         Banana           1$
3         Almond           1$
3         peanut           1$
4         Grapes           1$

我需要低于输出

id        product        price

2         Banana           1$
4         Grapes           1$

有谁能帮我写一个查询来得到上面的结果吗?

ql3eal8s

ql3eal8s1#

我认为您需要以下sql:

select id, product, price
  from table t1
 where (select count(t2.id) from table t2 where t2.id = t1.id) = 1;
lnvxswe2

lnvxswe22#

尝试此查询。您应该考虑到您正在使用的dbms的语法来格式化它。。。

SELECT q AS id, product, price
FROM
(SELECT COUNT(id) AS q, product, price
FROM table
GROUP BY id)
WHERE q = 1

我以为你指的是重复的身份证。这是你需要问题中提到的结果的唯一方法。

avwztpqn

avwztpqn3#

试试这个:

SELECT my_table.id, product, price
FROM my_table
LEFT JOIN
  (SELECT id,
          count(product) AS p_count
   FROM my_table
   GROUP BY id) AS t ON t.id = my_table.id
WHERE t.p_count = 1
juud5qan

juud5qan4#

最好使用 not exists :

select t.*
from t
where not exists (select 1
                  from t t2
                  where t2.id = t.id and t2.product <> t.product
                 );

这应该比其他方法更快。它会很好地利用 (id, product) .

相关问题