簡體   English   中英

MySQL從多個表中選擇一條記錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM