if(lwfi.`invoice_status` =30,lwfi.pay_settle_tp_withouttax ,0) payIsInvoiced 去重
时间: 2024-04-11 09:27:14 浏览: 136
您可以使用以下SQL查询来去重和计算 `payIsInvoiced` 字段:
```sql
SELECT DISTINCT
CASE WHEN lwfi.invoice_status = 30 THEN lwfi.pay_settle_tp_withouttax ELSE 0 END AS payIsInvoiced
FROM
your_table_name lwfi
```
请将 `your_table_name` 替换为您实际的表名。这个查询会返回去重后的 `payIsInvoiced` 值列表。
相关问题
mysql查询时做关联表LEFT JSON过滤条件ON中存在 AND d.invoice_code = m.invoice_code,当invoice_code == null,不使用AND d.invoice_code = m.invoice_code如何操作
在MySQL中,如果你想要在LEFT JOIN中处理`invoice_code`可能为NULL的情况,并避免在条件中直接使用`AND d.invoice_code = m.invoice_code`,你可以使用`COALESCE()`函数来替代。`COALESCE()`函数返回第一个非NULL参数,这样即使`d.invoice_code`为空,也可以匹配`m.invoice_code`。
下面是如何修改你的SQL语句的示例:
```sql
SELECT c.client_id, c.name, COALESCE((SELECT SUM(i.invoice_total) FROM invoices i WHERE i.client_id = c.client_id), 0) AS total_sales
FROM clients c
LEFT JOIN invoices d ON COALESCE(d.invoice_code, '') = COALESCE(m.invoice_code, '')
WHERE d.invoice_code IS NOT NULL OR d.invoice_code IS NULL AND m.invoice_code IS NULL;
```
在这个例子中,我们使用`COALESCE(d.invoice_code, '')`将`invoice_code`转换为字符串,这样即使它为NULL,也会与空字符串相比较。`OR d.invoice_code IS NULL AND m.invoice_code IS NULL`这部分则确保了在`invoice_code`一方为空而另一方也为空(即双方都为NULL)的情况下,仍然能够匹配。
优化以下代码片段:explain SELECT count(0) FROM invoice_sales_application a WHERE ( shop_order_id LIKE '23060919546335%' OR ( EXISTS ( SELECT 1 FROM invoice_sales_application_detail b WHERE a.application_no = b.application_no AND a.invoice_category = b.invoice_category AND b.del_flag = 0 AND b.shop_order_id LIKE '23060919546335%' ) AND a.is_merge = 1 ) )
优化后的代码如下:
```sql
SELECT COUNT(0)
FROM invoice_sales_application a
WHERE (a.shop_order_id LIKE '23060919546335%'
OR (a.is_merge = 1
AND EXISTS (
SELECT 1
FROM invoice_sales_application_detail b
WHERE a.application_no = b.application_no
AND a.invoice_category = b.invoice_category
AND b.del_flag = 0
AND b.shop_order_id LIKE '23060919546335%'
)
)
)
```
在优化后的代码中,主要做了以下几点改进:
1. 将子查询移动到 OR 子句内部,避免重复执行子查询。
2. 调整了括号的位置,以提高代码的可读性。
3. 将 AND 连接条件放在同一行,使代码更简洁。
以上是对代码进行的一些简单优化,具体的优化取决于数据库的结构和索引的使用情况。
阅读全文