从结果集中选择TOP 1

use*_*647 11 mysql sql

我想检索使用Union连接的查询结果集的前1个值

SELECT TOP 1 * FROM
(
    SELECT paused_time as end_time
        FROM production_time
        WHERE created_time = curdate()
    UNION 
    SELECT resumed_time as end_time
        FROM pause_timer
        WHERE created_time = curdate()
    UNION
    SELECT end_time as end_time
        FROM timer_idle
        WHERE created_time = curdate()
) as end_time
ORDER BY end_time DESC 
Run Code Online (Sandbox Code Playgroud)

但无法获得预期的结果.

Wib*_*ler 34

TOP据我所知,MySQL中没有关键字.你需要的是Limit:

SELECT * FROM
(
    SELECT paused_time as end_time FROM production_time WHERE created_time = curdate()
    UNION 
    SELECT resumed_time as end_time FROM  pause_timer WHERE created_time = curdate()
    UNION
    SELECT end_time as end_time FROM  timer_idle WHERE created_time = curdate()
) as end_time
ORDER BY end_time DESC 
LIMIT 1
Run Code Online (Sandbox Code Playgroud)