Вы можете просто count
все строки, для которых audio
не является NULL
. Но если ваш стол больше и содержит множество строк и т. Д., То реальная проблема с этим подходом заключается в том, что такой запрос может быть дорогим для БД и, по крайней мере, медленнее, чем это могло бы быть. Конечно, преждевременная оптимизация плохая вещь, но это не так - мы будем оптимизировать подход, а не код :)
хотите переключиться условно, если все строки являются пустыми для аудио колонки
Во-первых, было бы хорошо подумать, вопрос are all rows' audio column empty?
это действительно правильный. И нет. Это не так: на самом деле вам не нужно знать how many of rows are not null
или are all rows' audio column empty?
, потому что это полностью неуместно для вашего состояния, если есть 5, 10 или 100000. Что вы должны сделать, так это «перевернуть» вопрос и найти ответ на вопрос, например, if there's any row that is NOT null?
. И даже оба вопроса выглядят одинаково с первого взгляда, мы используем базу данных, чтобы получить ответ, так что на самом деле это весь игровой чейнджер.
По логике, чтобы ответить на этот вопрос if there's any row that is NOT null?
это просто достаточно, чтобы выяснить, существует ли по крайней мере один ряд с audio
быть NOT NULL
. «По крайней мере» вещь позволяет нам применить некоторые ограничения к запросу, потому что 1
прекрасно выполняет «по крайней мере одно» условие, мы будем использовать SQL LIMIT 1
, что сделает остановку БД и вернет результат, как только он найдет первую запись, соответствующую запрос, без необходимости проходить через всю таблицу. Это просто должно быть быстрее и менее ресурсоемким.
После выполнения наш запрос может вернуть два результата. Либо мы ничего не получаем (возвращаются нулевые строки), а это означает, что все audio
составляют NULL
или, как противоположность, мы получаем что-то (одна строка, не имеет значения, какая), что будет означать ответ на вопрос if there's any row that is NOT null?
: «да, это is '(потому что, по крайней мере, тот, который был возвращен).
Но в этом изображении только три строки, которые могут быть 10 или 15 или больше .. что в таком случае? Я просто хочу проверить, доступно ли какое-либо звуковое поле для родительского идентификатора. Если какое-либо одно поле не имеет значения null, оно должно возвращать значение true. любое предложение? – Artist
Просто сузить выбранные результаты до строк, разделяющих ваш родительский идентификатор с 'WHERE parentid = 1' –
WebnetMobile совершенно прав. Лучший ответ, чем мой. Лучше всего следить за минимизацией нагрузки на сервер, даже с такими маленькими вещами, чтобы вы привыкли к этому. –