Как я могу получить Заполненные(столбцы, которые не имеют пустых и не пустых значений) столбцы в MySQL?

#php #mysql #sql #wordpress

Вопрос:

Может ли кто-нибудь, пожалуйста, помочь мне получить количество заполненных столбцов MySQL?

Например: Структура Моей Таблицы:

ID Имя Имя
1 азбука нулевой
2 XYZ

В приведенной выше таблице у меня есть две строки, и обе строки содержат одно пустое и одно пустое значение, мне просто нужно получить количество каждой строки, в которой нет NULL EMPTY значения ИЛИ для определенного ID значения .


ожидаемый результат:

ГДЕ ID=1, результат будет:
Count = 2 (идентификатор, имя)

ГДЕ ID=2, результат будет:
Count = 2 (ID, LName)


**Я хочу использовать это в WordPress

Комментарии:

1. Можете ли вы объяснить ожидаемый результат для ID = 2 ? Разве счет не должен быть равен 1?

2. Проверьте каждый столбец (не пустой и не ПУСТОЙ) отдельно и подведите итоги тестирования.

3. @TimBiegeleisen Таким ID = 2 образом , количество будет равно двум, потому что оно также будет включать подсчет этого конкретного идентификатора.

4. @Akina В настоящее время у меня есть результаты таблицы базы данных в виде массива, и в настоящее время я просматриваю этот конкретный массив, используя PHP foreach, и сравниваю значение Не Null и Не пустое, и увеличиваю количество, но хорошо ли это для оптимизации?

Ответ №1:

Итак, после поисков в течение часа или двух.

Я использую это в качестве своего решения, но я не уверен, что это хорошая переоценка оптимизации. Вот что я использую:

 function ranking_mechanism( $currentUserID ){ global $wpdb; $rank = 0;  $results = $wpdb-gt;get_row(  $wpdb-gt;prepare('SELECT * FROM TABLE WHERE ID=%d', $currentUserID) );   $finalArr = (array) $results; // Convert $results as Array(to perform iteration), it(WordPress DB Query) typically return Object by Default  foreach ( $finalArr as $key =gt; $Table ) {  if( $finalArr[$key] == '' || $finalArr[$key] == 'NULL' ){  // Nothing to do   }else{  $rank = $rank 1; // Increase Rank If Found Value  }  return $rank; }  

Ответ №2:

 SELECT ID, (ID IS NOT NULL) /* assuming that ID is numeric and cannot be empty string */    (FName lt;gt; '' AND FName IS NOT NULL)     (LName lt;gt; '' AND LName IS NOT NULL) AS `Count` FROM source_table -- WHERE ID = ???