我正在使用带有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;
}
答案 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
)