Как правильней отсортировать выборку продуктов по двум категориям?
Как в SQL отсортировать выборку по критериям price от меньше к большему и в то же время, что сперва сперва count > 0
Т.е. сначала у нас идут те, где count > 0 и у них сортировка по price от меньшего к большему
А после уже остальные по price от меньшего к большему
Спасибо
По price понятна логика
Но что происходит в `count` = 0?
Я так понял при таком подходе по count нет доп. сортировки по тому, что сперва будут count == 1, ==2, ==0
А просто по ==0 и не !== 0?
Andre1997, При математических операциях и сравнении TRUE рассматривается как 1, FALSE - как 0.
То есть, при прямой сортировке, сначала будут строки, где условие не выполняется, затем те, где оно выполняется.
`count` = 0 - это логическое выражение. Оно может иметь значения TRUE, FALSE либо NULL.
При использовании в выражении сортировки оно имеет числовой контекст, и соответственно TRUE есть единица, FALSE есть ноль, а NULL так и останется NULL.
Соответственно при сортировке по возрастанию первыми будут записи с NULL (то есть те, у которых `count` есть NULL), потом с нулём (то есть FALSE, то есть те, у которых `count` больше нуля), и последними - с единичкой (то есть TRUE, то есть те, у которых `count` равен нулю).
А потом к каждой из этих групп будет применена сортировка следующего уровня.
In SQL, all logical operators evaluate to TRUE, FALSE, or NULL (UNKNOWN). In MySQL, these are implemented as 1 (TRUE), 0 (FALSE), and NULL.
UNKNOWN, в отличие от TRUE и FALSE, не является алиасом, и при прямом использовании интерпретируется как имя поля. Однако может использоваться как алиас в операторе IS.