【问题标题】:How can I get Filled(columns that have not Empty and Not Null Values) Columns Count in MySQL?如何在 MySQL 中获得填充(没有空值和非空值的列)列计数?
【发布时间】:2021-12-31 20:30:02
【问题描述】:

任何人都可以帮我计算填充的 MySQL 列的数量吗?

例如: 我的表结构:

ID FName LName
1 ABC NULL
2 XYZ

在上表中,我有两行,两行都包含一个 Null 和一个空值,我只需要获取每个没有 NULLEMPTY 特定值的行的计数ID.


预期结果:

如果 ID=1,结果将是:
计数 = 2(ID、FName)

如果 ID=2,结果将是:
计数 = 2(ID、LName)


**我想在 WordPress 中使用它

【问题讨论】:

  • 您能解释一下ID = 2 的预期结果吗?计数不应该是 1 吗?
  • 分别测试每一列(非空非NULL)并总结测试结果。
  • @TimBiegeleisen 所以对于ID = 2,计数将是 2,因为它也将包括该特定 ID 的计数。
  • @Akina 我目前已将数据库表结果作为一个数组获取,目前,我正在使用 PHP foreach 遍历该特定数组,并比较 Not Null 和 Not empty Value,并增加 COUNT ,但这对优化有好处吗?

标签: php mysql sql wordpress


【解决方案1】:
SELECT ID,   (ID IS NOT NULL) /* assuming that ID is numeric and cannot be empty string */
           + (FName <> '' AND FName IS NOT NULL) 
           + (LName <> '' AND LName IS NOT NULL) AS `Count`
FROM source_table
-- WHERE ID = ???

【讨论】:

    【解决方案2】:

    所以,在搜索了一两个小时之后。

    我使用它作为我的解决方案,但我不确定重新优化是否好。这是我正在使用的:

    function ranking_mechanism( $currentUserID ){
    global $wpdb;
    $rank = 0;
    
    $results = $wpdb->get_row(
        $wpdb->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 => $Table ) {
        if( $finalArr[$key] == '' || $finalArr[$key] == 'NULL' ){
            // Nothing to do 
        }else{
            $rank = $rank+1; // Increase Rank If Found Value
        }
        return $rank;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-05
      • 1970-01-01
      • 1970-01-01
      • 2015-07-22
      • 1970-01-01
      • 2021-10-06
      • 1970-01-01
      相关资源
      最近更新 更多