mysql case when 拼接SQL
时间: 2024-06-03 08:06:28 浏览: 170
SQL in的拼接
MySQL中的CASE WHEN语句是一种灵活的条件表达式,可以在查询中根据满足的条件返回不同的结果,同时可以将多个CASE WHEN语句进行拼接,实现更加复杂的查询需求。
拼接SQL的方式通常是将多个CASE WHEN语句通过UNION或者UNION ALL操作进行合并。例如,假设有以下两个表格:
表格1:orders
| order_id | customer_id | order_date | amount |
| -------- | ----------- | ----------| ------ |
| 1 | 100 | 2020-01-01 | 100 |
| 2 | 200 | 2020-03 | 300 |
表格2:customers
| customer_id | customer_name |
| ----------- | -------------|
| 100 | Alice |
| 200 | Bob |
| 300 | Carol |
我们想要查询每个顾客的总消费金额,以及顾客在orders表格中的订单数量。可以使用以下SQL语句进行拼接:
```
SELECT customer_name,
SUM(CASE WHEN orders.customer_id=customers.customer_id THEN orders.amount ELSE 0 END) AS total_spent,
COUNT(CASE WHEN orders.customer_id=customers.customer_id THEN orders.order_id ELSE NULL END) AS num_orders
FROM orders
JOIN customers ON orders.customer_id=customers.customer_id
GROUP BY customer_name
```
在上面的SQL语句中,首先通过JOIN操作将两个表格连接起来,然后使用CASE WHEN语句分别计算每个顾客的总消费金额和订单数量,并通过SUM和COUNT函数进行统计。最后使用GROUP BY语句按照顾客名称进行分组。
阅读全文