There is a table such as
+-----+-------+ | id | status| +-----+-------+ | 01 | open | | 02 | close | | 03 | close | | 04 | close | | 05 | open | | 06 | open | | 07 | open | | 08 | close | | 09 | open | | 10 | close | +-----+-------+
I want the number of open-status records and if the number of records are greater than 1, I want to fetch the 1st open status record ID.
for that, I have been trying doing like this
SELECT status, count(*) as count from table_name group by status='open' order by status desc limit 1 if(@count>0) select * from table_name where status like 'open' union select * from table_name limit 1
which seems not working (please forgive me if it is a blunder).
I finally want the ID of the first open-status record if only the number of open status records is more than 1.
Advertisement
Answer
you can use a query like this:
SELECT STATUS, count(*) AS count, MIN(id) AS FirstID FROM TABLE_NAME WHERE STATUS = 'open' GROUP BY STATUS HAVING count(*) > 1;