MYSQL PHP с упорядочением по и пределом 1, возвращающим ноль - PullRequest
0 голосов
/ 26 октября 2019

Я пытаюсь выбрать первую строку, где может быть любое количество строк с общим уникальным идентификатором, который группирует их (необязательно последовательно в базе данных).

Я использую ORDER BY наосновной столбец, который является полностью уникальным идентификатором и является целым (11) и использует LIMIT 1.

$orderins = $db->Execute("select *
                    from " . TABLE_ORDERS_STATUS_HISTORY . "
                    where orders_id = '.$zv_orders_id.' order by orders_status_history_id ASC LIMIT 1");


$orderins = $orderins->fields['comments']; // SEND VAR

orders_status_history_id - это основной (полностью уникальный идентификатор), а также первый столбец, который использует автоинкремент.

orders_id - это общий идентификатор, которым будут делиться сгруппированные строки. Строки с этим идентификатором не обязательно будут одна за другой.

И я получаю пустой результат.

В тот момент, когда я удаляю ORDER BY, он отправляет результат.

Позвольте мне также включить, когда я удаляю ORDER BY, пока он возвращает только самую первую строку с несколькими тестами.

Возвращение первой строки, которая существует в базе данных с этим orders_id, равнана самом деле желаемый результат. Поэтому, возможно, мне не нужен ORDER BY, чтобы работать или быть там. Могу ли я быть уверен, что LIMIT 1 всегда получит первую строку в базе данных, которая соответствует WHERE BY, или есть вероятность, что он вернет одну из других строк, которые также используют фильтр WHERE BY.

1 Ответ

1 голос
/ 26 октября 2019

PHP - это очень запутанные языки, и две разные кавычки на самом деле очень разные. Вы случайно перепутали их, что легко допустить. Чтобы исправить это, попробуйте изменить запрос на:

"SELECT * FROM " . TABLE_ORDERS_STATUS_HISTORY . " where orders_id = '$zv_orders_id' order by orders_status_history_id ASC LIMIT 1"

, теперь он должен работать.

также посмотрите на комментарий catcon

...