【问题标题】:SQL Selecting Repetead Rows in a tableSQL 选择表中的重复行
【发布时间】:2020-02-08 05:29:22
【问题描述】:

我目前正在更新我的 SQL 知识。

我有一张桌子 - 会话。它存储有关用户日志活动的信息。即他们登录的持续时间。见下表。

所以我试图从表中选择所有重复的行(不仅仅是验证是否存在重复的行)。 到目前为止,我已经设法获得了整个表的输出,但是,我只需要 userId 和 duration 列。我怎样才能只选择这两行?

我认为它应该是 SELECT a.userId 而不是 a.* 等,但是我收到错误“不明确的列名:userId”。不知道发生了什么。对不起,如果这是一个愚蠢的问题,但任何帮助表示赞赏。谢谢。

  SELECT a.*                      
  FROM sessions a
  JOIN ( SELECT userId,duration
          FROM sessions 
          GROUP BY userId
          HAVING COUNT(userId) > 1 ) b
    ON a.userId = b.userId
    ORDER BY userId; 

【问题讨论】:

标签: mysql sql sqlite


【解决方案1】:

问题是由于ORDER BY 子句造成的,该子句没有将userId 引用限定为其中一个表。使用这个版本:

ORDER BY a.userId;

这是您更新后的查询,子查询的 select 子句也通过删除对 duration 的不正确(和不必要的)引用进行了更正:

SELECT a.*                      
FROM sessions a
INNER JOIN
(
    SELECT userId
    FROM sessions 
    GROUP BY userId
    HAVING COUNT(userId) > 1
) b
    ON a.userId = b.userId
ORDER BY
    a.userId; 

【讨论】:

    猜你喜欢
    • 2013-01-12
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 2020-10-16
    • 2011-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多