不能弄清楚如何只显示相同值的表数据

时间:2019-04-01 21:10:58

标签: javascript mysql sql node.js

我正在使用带有express,mysql和js的nodejs。我有一个名为EVENT的表,正在处理的一个查询仅显示具有相同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 个答案:

答案 0 :(得分: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_time,例如:

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