2009-12-19 3 views
1

두 개의 필드 (id 및 word)가있는 테이블이 있습니다. 사람은 이유에 가르치 려 수 :MySQL 쿼리 퍼즐

$query0 = "SELECT * FROM words WHERE id IN ($treated_words) "; 

가 유효한 쿼리입니다. 하지만 :

$query0 = "SELECT * FROM words ORDER BY id ASC WHERE id IN ($treated_words) "; 

아니요. 많은 감사

+0

고맙습니다. 그런 바보 같은 질문에 사과드립니다. –

+2

@ 패트 릭 : 우리 모두 거기에 있었어. –

답변

9

SQL 쿼리의 요소 순서가 중요합니다. ORDER BY 절은 WHERE 절 뒤에 나타나야합니다.

MySql 문서에서 구문 규칙을 확인하십시오.

SELECT [ DISTINCT | ALL ] 
    column_expression1, column_expression2, .... 
    [ FROM from_clause ] 
    [ WHERE where_expression ] 
    [ GROUP BY expression1, expression2, .... ] 
    [ HAVING having_expression ] 
    [ ORDER BY order_column_expr1, order_column_expr2, .... ] 
6

WHERE id IN ($treated_words) 부분 뒤에 ORDER BY id ASC을 이동하려고합니다.

2

order_by before where 문을 사용할 수 없습니다.

MySQL은 이러한 방식으로 작동합니다. 테이블에서 모든 항목이나 특정 필드를 선택하고 필터 (위치) 및 id 별 주문에 적용합니다. 그래서 선택한 데이터를 주문한 다음 필터를 적용 할 수 없습니다.