Reputation: 663
I would like to retrieve the top 1 value of result set of query which is connected using Union
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
But could not get the expected result.
Upvotes: 23
Views: 82169
Reputation: 23291
If you don't have any other columns to select (as in the OP), then you can also select MAX()
instead of ORDER BY-LIMIT 1 to select the top 1.
SELECT MAX(end_time) AS end_time
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 times
Upvotes: 0
Reputation: 1045
There is no TOP
keyword in MySQL as far as I am aware. What you require is 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
Upvotes: 49