【问题标题】: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 BYCOUNT(*)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;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-24
        • 1970-01-01
        相关资源
        最近更新 更多