3

this is image of user feedback and

SELECT *,DAYNAME(created_on) AS created_day FROM users_feedback WHERE created_day = 'wednesday'

When I execute above query it generate an error like below

Error Code : 1054
Unknown column 'created_day' in 'where clause'

Execution Time : 00:00:00:000
Transfer Time  : 00:00:00:000
Total Time     : 00:00:00:000
halfer
  • 19,824
  • 17
  • 99
  • 186
Query Master
  • 6,989
  • 5
  • 35
  • 58

5 Answers5

6

You cannot use aliases from SELECT in the WHERE clause.

… WHERE DAYNAME(created_on) = 'wednesday'

should fix your problem.

knittl
  • 246,190
  • 53
  • 318
  • 364
  • And a more detailed explanation (shameless self-ad): [Using expression column in where clause](http://stackoverflow.com/questions/6545664/using-case-expression-column-in-where-clause/6545685#6545685) – ypercubeᵀᴹ Mar 05 '12 at 12:02
  • Because that's how SQL works. SELECT is only evaluated after WHERE. See the answer that ypercube has linked above, it explains it very well. – knittl Mar 05 '12 at 12:17
2

change the where clause to

DAYNAME(created_on) = 'wednesday'

one can't use alias in where clause.

Junaid
  • 2,084
  • 1
  • 20
  • 30
1

What do you think about this?

SELECT *,DAYNAME(created_on) AS created_day
FROM users_feedback
WHERE DAYNAME(created_on) = 'wednesday'
halfer
  • 19,824
  • 17
  • 99
  • 186
Query Master
  • 6,989
  • 5
  • 35
  • 58
1
SELECT *,DAYNAME(created_on) AS created_day 
FROM users_feedback 
WHERE DAYNAME(created_on) = 'wednesday

if you will use alias name in where clause, it will give performance issues and sometimes if you used it in wrong way it can give you error like yours way.

So best way is to use actual columns whenever needed.

Hope this helps.

Java
  • 2,451
  • 10
  • 48
  • 85
0
SELECT *,DAYNAME(created_on) AS created_day 
FROM users_feedback 
WHERE created_on= 'wednesday'

Нou have to mention the actual field name in where clause, where the value 'wednesday' exists, hope so the above query will work

Aliaksei Kliuchnikau
  • 13,589
  • 4
  • 59
  • 72