SELECT count(1) FROM (SELECT glc,rdid FROM zhima_borrow_order_2023 where 1 = 1 and libcode = 'STC001' GROUP BY glc, rdid ) as t 换种写法,要求不使用子查询和COUNT(DISTINCT)函数
时间: 2024-03-01 17:51:05 浏览: 88
可以使用以下方式进行重写:
```
SELECT COUNT(*)
FROM (
SELECT glc, rdid
FROM zhima_borrow_order_2023
WHERE 1 = 1 AND libcode = 'STC001'
GROUP BY glc, rdid
HAVING COUNT(*) > 0
) as t
```
这里使用了 HAVING 子句来过滤出现次数大于0的组合,然后再对结果进行计数。
相关问题
SELECT count(1) FROM (SELECT glc,rdid FROM zhima_borrow_order_2023 where 1 = 1 and libcode = 'STC001' GROUP BY glc, rdid ) as t 换种写法,不使用子查询也不使用COUNT(DISTINCT)
可以使用以下方式进行重写:
```
SELECT COUNT(DISTINCT CONCAT(glc, '-', rdid))
FROM zhima_borrow_order_2023
WHERE 1 = 1 AND libcode = 'STC001'
```
这里使用了 CONCAT 函数将 glc 和 rdid 进行拼接,并用 DISTINCT 关键字去重。
SELECT count( DISTINCT glc, rdid ) FROM zhima_borrow_order_2023 where glc = 'T1C2S3O4F5T6' 转换成不使用 DISTINCT 的sql
可以使用GROUP BY来实现不使用DISTINCT的查询:
SELECT COUNT(*) FROM (SELECT rdid FROM zhima_borrow_order_2023 WHERE glc = 'T1C2S3O4F5T6' GROUP BY rdid) AS t;
这个查询会先根据条件`WHERE glc = 'T1C2S3O4F5T6'`过滤掉不符合条件的数据,然后再按照`rdid`进行分组,并统计分组后的数量。由于分组后的每组数据中,`glc`的值都相同,所以不需要对`glc`进行分组。最后,将分组后的结果作为子查询,再对子查询的结果进行数量统计即可。
阅读全文