无法弄清楚如何显示只有相同值的表数据[重复]

Posted

技术标签:

【中文标题】无法弄清楚如何显示只有相同值的表数据[重复]【英文标题】:Cant figure out how to display table data with only same values [duplicate] 【发布时间】:2019-08-23 02:55:31 【问题描述】:

我正在使用 nodejs,带有 express、mysql 和 js。我有一个名为EVENT 的表,我正在处理的一个查询是仅显示表上具有相同start_time 的数据。基本上以 conflicting start_time 显示所有数据。

我尝试了一堆不同的查询,但我无法让它工作。

任何帮助将不胜感激。

db.query(
    'select start_time 
    FROM EVENT 
    INNER JOIN select start_time FROM EVENT GROUP BY start_time HAVING COUNT(EVENT > 1)', 
    function (err, result) 
      if (err) 
        res.status(500).send(error: true, message: "Error Querying Database");
        // throw err;
      

【问题讨论】:

能否向我们展示示例数据和预期输出? 【参考方案1】:

您似乎希望提取所有 start_time 不是唯一的记录。以下是一些解决方案,按效率降序排列。

在 MySQL 8.0 中,这可以通过窗口函数来实现,例如:

SELECT *
FROM (
    SELECT e.*, COUNT(*) OVER(PARTITION BY start_time) cnt FROM events
) x WHERE cnt > 1

在早期版本中,您可以将EXISTS 条件与相关子查询一起使用:

SELECT *
FROM events e
WHERE EXISTS (
    SELECT 1 
    FROM events e1 
    WHERE e1.start_time = e.start_time AND e1.id != e.id
)

这假设您有一列可用于消除具有相同start_time 的记录的歧义(我称之为id)。如果不这样做,您可以使用带有相关子查询的 IN 条件,该子查询列出了不止一次出现的 start_times,例如:

SELECT *
FROM events
WHERE event_date IN (
    SELECT start_time FROM events GROUP BY start_time HAVING COUNT(*) > 1
)

【讨论】:

或加入内联视图SELECT e.* FROM ( SELECT c.start_time FROM event c GROUP BY c.start_time HAVING SUM(1) > 1 ) d JOIN event e ON e.start_time <=> d.start_time +10 在这种情况下,这个问题是一个非常明显的重复问题,你应该投票关闭它,不要再回答了。 @Shadow:好的,同意... @spencer7593: 是的,很好...我个人更喜欢内联视图而不是IN 方法,并使其成为列表中的第三个选择!

以上是关于无法弄清楚如何显示只有相同值的表数据[重复]的主要内容,如果未能解决你的问题,请参考以下文章

无法弄清楚为啥我在我的 jsonp 序列化中得到重复数据

从具有相同值的两个表中选择数据后结果重复

无法弄清楚如何将数据异步推送到数组

具有多个值的C#字典如何[重复]

如何以相同的形式更新表及其关联的连接表?

从 Parse 查询中获取一个数组 [重复]