无法弄清楚如何显示只有相同值的表数据[重复]
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_time
s,例如:
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
方法,并使其成为列表中的第三个选择!以上是关于无法弄清楚如何显示只有相同值的表数据[重复]的主要内容,如果未能解决你的问题,请参考以下文章