Что такое ORDER BY по умолчанию, если я использую инструкцию SELECT в mysqli :: query - PullRequest
1 голос
/ 28 ноября 2011

Если у меня есть такая таблица:

int        VARCHAR        int
----------------------------------      
 1          "U"            1
 2          "A"            1
 3          "B"            1

и я запускаю запрос через mysqli php следующим образом:

$sql = "SELECT * FROM " . parent::GetTableName();
if ($current_user_only == TRUE)
    $sql = $sql . " WHERE userID_FK=" . parent::GetUserID();

$result = $this->get_db_con()->query($sql);
if ($result == FALSE)
    throw new Exception("SQL exec failed (". __FILE__ . __LINE__ . "):      $this->get_db_con()->error");

while ($row = mysqli_fetch_array($result))
{
    echo($row[1]);
}

Я получаю вывод, подобный этому:

 2          "A"            1
 3          "B"            1
 1          "U"            1

То есть результат, похоже, сортируется по столбцу VARCHAR. Если я выполню тот же запрос в SEQUEL PRO, он даст мне результаты в том порядке, в котором я ожидаю, и это порядок, в котором они введены в таблицу.

Есть идеи?

Ответы [ 2 ]

4 голосов
/ 28 ноября 2011

Я бы никогда не принял какой-либо конкретный заказ без заказа по пункту.Если вы хотите отсортировать строки по ID, используйте order by ID.

3 голосов
/ 28 ноября 2011

Краткий ответ: нет ни одного.

Длинный ответ: Для таблиц MyISAM это естественный порядок, то есть порядок, в котором строки хранятся на диске, обычно это порядок вставки.Это можно изменить, запустив ALTER TABLE ORDER BY Для таблиц InnoDB это порядок первичного ключа.

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