javascript - 无法弄清楚如何显示只有相同值的表数据
问题描述
我正在使用 nodejs,带有 express、mysql 和 js。我有一个名为的表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
具有相关子查询的条件,该条件列出start_time
多次出现的 s,例如:
SELECT *
FROM events
WHERE event_date IN (
SELECT start_time FROM events GROUP BY start_time HAVING COUNT(*) > 1
)
推荐阅读
- python - 要绘制哪些数据以了解哪种模型最适合该问题?
- go - 将浮点数分配给结构的整数元素
- r - 将向量转换为 R 中具有两列的数据框
- apache-kafka - 如何从 KStream 获取 KafkaStream 的状态
- python - 在 Python 中将十进制或二进制值转换为二进制有符号 2 的补码
- vue.js - 使用vue js vue-virtual-scroller插件时如何从特定滚动位置开始?
- javascript - 使用 Javascript/Jquery 在 P 标签内添加 SPAN
- bash - 两个块之间的管道运算符
- php - 如何通过 largon 将 mysql 连接到 PHP
- r - 是否有一个函数可以在 R 中的一个表中获取多个频率表