【问题标题】:SQL - Distinct subquerySQL - 不同的子查询
【发布时间】:2017-11-19 16:42:27
【问题描述】:
有人可以解释如何进行此查询:
我必须选择所有没有重复“idPrdodototto”的字段
这是我不工作的查询:
SELECT *
FROM riempie1
WHERE idProdotto IN (SELECT DISTINCT idProdotto
FROM riempie1
);
【问题讨论】:
标签:
sql
select
subquery
distinct
【解决方案1】:
您似乎正在学习 SQL,所以我会有点冗长。
IN 子查询中的 SELECT DISTINCT 不执行任何操作。什么都没有。 IN 隐含地执行 SELECT DISTINCT,因为如果 (1, 2, 3) 中存在某些内容,则 (1, 1, 1, 2, 2, 3) 中存在某些内容。
您要做的是计算idProdotto 在表格中出现的次数。您想要只出现一次的 idProdotto 值。
典型的方法是使用GROUP BY、COUNT(*) 和HAVING。
【解决方案2】:
这样做:
SELECT riempie1.* FROM riempie1
join (select idProdotto from riempie1 group by riempie1 having count(riempie1)=1) riempie2
on riempie1.idProdotto = riempie2.idProdotto
【解决方案3】:
您不能在子查询中使用 distinct。取而代之的是,您可以这样做:
Select distinct column names,.. from table1 where column name= select statement;