gpt4 book ai didi

mysql - 通过 if 语句重用 count

转载 作者:行者123 更新时间:2023-11-29 21:11:10 24 4
gpt4 key购买 nike

我想优化以下查询以避免多次计数运行。

SELECT product.Id,
IF((SELECT COUNT(*)
FROM productorders
WHERE productorders.ProductId = product.Id) > 0,
(SELECT COUNT(*) FROM productorders WHERE productorders.ProductId = product.Id),
9999999999
)
FROM product

有人可以提出同样的解决方案吗

我在魔数(Magic Number) 9999999999 中使用了更复杂的逻辑,为简单起见,我在这里避免了它

此外,这个查询是一个更大查询的一小部分......为了简单起见,我避免了它

解释结果如下

+ 选项 id select_type 表类型 possible_keys key key_len ref rows Extra

1基本的产品指数无效的类别ID8无效的25使用索引

3

依赖子查询产品订单引用基本的基本的8表测试.产品.Id1使用索引2

<小时/>

依赖子查询产品订单引用基本的基本的8表测试.产品.Id1使用索引

最佳答案

使用 MySQL 的优化解决方案用户定义变量:

SET @counter := 0;
SELECT product.Id,
@counter := (SELECT COUNT(*) FROM productorders WHERE productorders.ProductId = product.Id) as cond,
IF(@counter > 0, @counter, 9999999999) as counter
FROM product

我发现您始终只想获取 product.Idcounter 字段 - 从子查询中选择:

SELECT product_id, counter(
SELECT product.Id as product_id,
@counter := (SELECT COUNT(*) FROM productorders WHERE productorders.ProductId = product.Id) as cond,
IF(@counter > 0, @counter, 9999999999) as counter
FROM product) as counter

关于mysql - 通过 if 语句重用 count,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36351071/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com