Пазл MySQL Query - PullRequest
       6

Пазл MySQL Query

1 голос
/ 20 декабря 2009

У меня есть таблица с двумя полями (id и word). Может ли кто-нибудь объяснить мне, почему:

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

является действительным запросом. Но:

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

нет. Большое спасибо

Ответы [ 3 ]

9 голосов
/ 20 декабря 2009

Порядок элементов в запросе 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 голосов
/ 20 декабря 2009

попробуйте переместить ORDER BY id ASC после WHERE id IN ($treated_words) части.

2 голосов
/ 20 декабря 2009

Вы не можете использовать order_by до оператора where.

MySQL работает таким образом. он выбирает все или определенные поля из таблицы, применяется к фильтру (где) и затем заказы по идентификатору. поэтому вы не можете упорядочить выбранные данные, а затем применить к ним фильтры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...