可以使用ThinkPHP的查询语句结合MySQL的IF和CASE语句来实现。以下是一个示例代码:

// 假设数据库表名为z_data_days,datetime字段名为date_time

// 查询2023-09月的统计数据
$resultSeptember = Db::name('z_data_days')
    ->field([
        'COUNT(IF(Ln_Meet_Standards = 1, 1, NULL)) AS count_ln_meet_1',
        'COUNT(IF(Ln_Meet_Standards = 0, 1, NULL)) AS count_ln_meet_0',
        'COUNT(IF(Ld_Meet_Standards = 1, 1, NULL)) AS count_ld_meet_1',
        'COUNT(IF(Ld_Meet_Standards = 0, 1, NULL)) AS count_ld_meet_0',
    ])
    ->where('DATE_FORMAT(date_time, "%Y-%m") = "2023-09"')
    ->find();

// 查询2023-08月的统计数据
$resultAugust = Db::name('z_data_days')
    ->field([
        'COUNT(IF(Ln_Meet_Standards = 1, 1, NULL)) AS count_ln_meet_1',
        'COUNT(IF(Ln_Meet_Standards = 0, 1, NULL)) AS count_ln_meet_0',
        'COUNT(IF(Ld_Meet_Standards = 1, 1, NULL)) AS count_ld_meet_1',
        'COUNT(IF(Ld_Meet_Standards = 0, 1, NULL)) AS count_ld_meet_0',
    ])
    ->where('DATE_FORMAT(date_time, "%Y-%m") = "2023-08"')
    ->find();

// 输出结果
echo "2023-09: \n";
echo "Ln_Meet_Standards=1 count: " . $resultSeptember['count_ln_meet_1'] . "\n";
echo "Ln_Meet_Standards=0 count: " . $resultSeptember['count_ln_meet_0'] . "\n";
echo "Ld_Meet_Standards=1 count: " . $resultSeptember['count_ld_meet_1'] . "\n";
echo "Ld_Meet_Standards=0 count: " . $resultSeptember['count_ld_meet_0'] . "\n";

echo "2023-08: \n";
echo "Ln_Meet_Standards=1 count: " . $resultAugust['count_ln_meet_1'] . "\n";
echo "Ln_Meet_Standards=0 count: " . $resultAugust['count_ln_meet_0'] . "\n";
echo "Ld_Meet_Standards=1 count: " . $resultAugust['count_ld_meet_1'] . "\n";
echo "Ld_Meet_Standards=0 count: " . $resultAugust['count_ld_meet_0'] . "\n";

在上述代码中,使用了Db::name('z_data_days')来指定查询的表名为z_data_days->field([])指定需要查询的字段。

COUNT(IF(...))中,使用了IF语句来根据条件判断是否计数,将满足条件的值设为1,不满足条件的值设为NULL,然后再使用COUNT函数进行统计。其中,Ln_Meet_StandardsLd_Meet_Standards是字段名,count_ln_meet_1count_ln_meet_0count_ld_meet_1count_ld_meet_0是结果集中的字段名,可以根据需要修改。

->where('DATE_FORMAT(date_time, "%Y-%m") = "2023-09"')用于筛选出日期为2023-09的记录,通过DATE_FORMAT函数将datetime字段转换为年月格式进行比较。

最后,通过find()方法执行查询并获取结果集,然后可以根据需要输出结果。

注意:上述代码中的Db是使用ThinkPHP的数据库操作类,需要根据项目中实际的命名空间和引入方式进行修改。

用thinkphp写一个查询语句使用mysql中的if case 查询统计z_data_days表中datetime字段的年月等于2023-09时Ln_Meet_Standards=1的count值年月等于2023-09时Ln_Meet_Standards=0的count值年月等于2023-09时Ld_Meet_Standards=0的count值年月等于2023-09时Ld

原文地址: https://www.cveoy.top/t/topic/i5Ms 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录