Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to select using a WHERE condition on an aliased column using MySQL?

Tags:

sql

mysql

I have the following Query:

SELECT IF(TIMESTAMPDIFF(HOUR,users_codes.timestam,CURRENT_TIMESTAMP()) < 48,'no','yes') AS Expired
FROM users_codes

How do I return only rows that have 'no'?

like image 412
Sohel Mansuri Avatar asked Jan 21 '26 11:01

Sohel Mansuri


1 Answers

add a WHERE condition. You cannot use the ALIAS on the where clause.

SELECT IF(TIMESTAMPDIFF(HOUR,users_codes.timestam,CURRENT_TIMESTAMP()) < 48,'no','yes') AS Expired 
FROM   users_codes
WHERE  IF(TIMESTAMPDIFF(HOUR,users_codes.timestam,CURRENT_TIMESTAMP()) < 48,'no','yes') = 'no'

or use a subquery

SELECT *
FROM
(
    SELECT IF(TIMESTAMPDIFF(HOUR,users_codes.timestam,CURRENT_TIMESTAMP()) < 48,'no','yes') AS Expired 
    FROM   users_codes
) s
WHERE  Expired  = 'no'
like image 85
John Woo Avatar answered Jan 23 '26 01:01

John Woo



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!