2013-10-20 1 views
0

이 예를 RecordDate에 대한 열 이름과 날짜를 "가상"열 이름을 정의하는 WHERE 전에의 MySQL CAST (CONCAT_WS이 올바른 구문을 얻으려고 노력

SELECT EntryId FROM 2_1_journal 
WHERE CAST(CONCAT_WS('-', RecordYear,RecordMonth,RecordDay) AS DATE) = ? 

작동하지만합니다.

SELECT EntryId FROM 2_1_journal 
CAST(CONCAT_WS('-', RecordYear,RecordMonth,RecordDay) AS DATE) RecordDate 
WHERE RecordDate = ? 


SELECT EntryId FROM 2_1_journal 
CAST(CONCAT_WS('-', RecordYear,RecordMonth,RecordDay) AS DATE) AS RecordDate 
WHERE RecordDate = ? 


SELECT EntryId FROM 2_1_journal 
CAST((CONCAT_WS('-', RecordYear,RecordMonth,RecordDay) AS DATE) AS RecordDate) 
WHERE RecordDate = ? 

을 시도

모든 경우에 오류가 발생합니다. Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CAST

답변

1

http://dev.mysql.com/doc/refman/5.5/en/select.html 올바른 synatax 무엇인지 조언을 주시기 바랍니다 : 컬럼 값이 아직 결정되지 않을 수 있기 때문에

는 "WHERE 절에 열 별칭을 참조 허용되지 않습니다이 때 WHERE 절 실행됩니다. 제 C.5.5.4, Problems with Column Aliases를 참조하십시오. "

당신이뿐만 아니라 열 값으로 WHERE 절에있는 연산의 결과를 선택 싶은 경우에, 당신은 작업을 작성해야 두 배 - 한 번 WHERE 절에, 별칭없이, 및 열 목록에 후뿐만 아니라 선택합니다.

관련 문제