Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MySQL: Dynamically add columns to query results

Tags:

mysql

I have this table:

update_id | project_id | content | date
------------------------------------------------------
1         | 1          | text... | 2011-12-20 22:10:30 
2         | 2          | text... | 2011-12-20 22:10:30 
3         | 2          | text... | 2011-12-21 22:10:30 
4         | 2          | text... | 2011-12-22 22:10:30 
5         | 2          | text... | 2011-12-23 22:10:30 

To get the latest two updates for a specific project I use:

SELECT update_id, title, content, date
FROM updates
WHERE project_id = 2
ORDER BY date DESC
LIMIT 2

Now, I want to dynamically add a 'update_time' column to the results, with the values "LATEST" or "PREVIOUS" based on if it is the latest update or the one before that, like this:

update_time | update_id | content | date
------------------------------------------------------
LATEST      | 5          | text... | 2011-12-23 22:10:30 
PREVIOUS    | 4          | text... | 2011-12-22 22:10:30 

Only if you want to know why I need this: MySQL: Select row by id with previous and next rows by date

like image 683
Jonathan Avatar asked Feb 01 '26 22:02

Jonathan


1 Answers

Here's some smart-ass SQL. It select 'LATEST' for the first row, and 'PREVIOUS' for all others (should we have more than one of them).

SELECT IF(@rownum = 0, 'LATEST', 'PREVIOUS') update_time, update_id, 
       title, content, date, (@rownum := @rownum + 1) r
FROM updates, (SELECT @rownum := 0) dummy
WHERE project_id = 2
ORDER BY date DESC
LIMIT 2

Also it adds another column to the resultset. Hope it's not a problem.

like image 65
Sergio Tulentsev Avatar answered Feb 04 '26 14:02

Sergio Tulentsev



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!