[英]MySQL select one record from multiple tables
我有400多個表,每個表都有列時間戳。 我想為這些表中的每一個拉時間戳的第一行/記錄。 我不想運行400多個查詢,最好的方法是什么?
您可以這樣運行UNION查詢:
SELECT Id, yourColumn, timestamp FROM Table001 ORDER BY timestamp DESC LIMIT 1
UNION ALL
SELECT Id, yourColumn, timestamp FROM Table002 ORDER BY timestamp DESC LIMIT 1
UNION ALL
SELECT Id, yourColumn, timestamp FROM Table003 ORDER BY timestamp DESC LIMIT 1
ORDER BY timestamp
使用循環創建此語句:
SET @resultQuery = NULL;
SELECT
GROUP_CONCAT(
DISTINCT
CONCAT('SELECT * FROM ', table_name, ' ORDER BY timestamp DESC LIMIT 1 ')
SEPARATOR '\r\nUNION\r\n'
)
INTO
@resultQuery
FROM
information_schema.COLUMNS
WHERE
table_schema = '???' AND column_name LIKE '%timestamp';
SELECT @resultQuery;
需要從400多個表中獲得第一條記錄看起來有點糟糕的設計,但是如果它們具有相同的架構,則可以使用UNION ALL
:
SELECT * FROM foo ORDER BY timestamp ASC LIMIT 1
UNION ALL
SELECT * FROM bar ORDER BY timestamp ASC LIMIT 1
UNION ALL
SELECT * FROM baz ORDER BY timestamp ASC LIMIT 1
-- etc...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.