【发布时间】:2019-11-19 19:21:49
【问题描述】:
我有一堆表格('table001'、'table002' 等),其中包含大量行和几列。
列是“id”(键)、“模式”(“ui”或“cmd”)和日期。
我想找出所有表中存在多少个唯一的 'id',其模式设置为 'ui' 并且其日期小于 30 天前。
这是我当前的查询:
SELECT COUNT(*) FROM
(
SELECT id FROM table001 WHERE mode="ui" AND date > (NOW() - INTERVAL 30 DAY)
UNION
SELECT id FROM table002 WHERE mode="ui" AND date > (NOW() - INTERVAL 30 DAY)
UNION
SELECT id FROM table003 WHERE mode="ui" AND date > (NOW() - INTERVAL 30 DAY)
UNION
[...etc etc for 30 tables]
) as t
这是正确的做法吗?
【问题讨论】:
-
如何从您的 UNION 中创建一个视图,然后从视图中选择所有唯一 ID?
-
'这是正确的做法吗?' - 是的,它是联合将在所有表中重复数据删除 id
标签: mysql duplicates union