Запрос и получение row count - MySQL

Узнай цену своей работы

Формулировка задачи:

Есть такая запись в бд, нужно получить кол-во колонок которые = 0 Помогите дописать запрос 'SELECT * FROM `user` WHERE `uid` = ?'

Решение задачи: «Запрос и получение row count»

textual
Листинг программы
WITH q AS ( SELECT 1 AS col1, 2 AS col2, 3 AS col3, 4 AS col4, 5 AS col5, 6 AS col6, 0 AS col7, 0 AS col8, 9 AS col9 FROM dual)
SELECT COUNT(*), q.*
FROM(SELECT * FROM q WHERE col1 = 0
UNION ALL
SELECT * FROM q WHERE col2 = 0
UNION ALL
SELECT * FROM q WHERE col3 = 0
UNION ALL
SELECT * FROM q WHERE col4 = 0
UNION ALL
SELECT * FROM q WHERE col5 = 0
UNION ALL
SELECT * FROM q WHERE col6 = 0
UNION ALL
SELECT * FROM q WHERE col7 = 0
UNION ALL
SELECT * FROM q WHERE col8 = 0
UNION ALL
SELECT * FROM q WHERE col9 = 0), q

Объяснение кода листинга программы

В этом коде используется конструкция SQL с именем WITH, которая позволяет использовать результат одного запроса в другом запросе. В этом случае, результат запроса с именем q используется во внешнем запросе. Внутренний запрос q представляет собой таблицу с 9 столбцами, которые содержат числа от 1 до 9. Внешний запрос использует оператор UNION ALL для объединения 9 отдельных SELECT-запросов, каждый из которых ищет строки в таблице q, где соответствующий столбец равен 0. Таким образом, каждый из этих запросов вернет все строки из таблицы q, где соответствующий столбец равен 0. В результате, все эти строки объединяются в одну таблицу, и внешний запрос считает общее количество строк в этой таблице, а также возвращает все строки из таблицы q. Таким образом, результатом этого запроса будет число (количество строк в итоговой таблице) и таблица с 9 столбцами, содержащими числа от 1 до 9, где каждая строка соответствует строке из таблицы q, где соответствующий столбец равен 0.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.2 из 5