This question already has answers here:
Finding duplicate values in MySQL
(24个答案)
在10个月前关闭。
我正在使用带有express,mysql和js的nodejs。我有一个名为
我尝试了一堆不同的查询,但是我无法使其正常工作。
任何帮助,将不胜感激。
在早期版本中,可以将
假定您有一列可用于消除具有相同
(24个答案)
在10个月前关闭。
我正在使用带有express,mysql和js的nodejs。我有一个名为
EVENT
的表,正在处理的一个查询是仅在具有相同start_time
的表上显示数据。基本上显示所有与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;
}
最佳答案
您似乎希望提取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
,例如:SELECT *
FROM events
WHERE event_date IN (
SELECT start_time FROM events GROUP BY start_time HAVING COUNT(*) > 1
)