写一个 sql 字段名有 id 状态 0成功 1失败 类型 查询多个账户 有多条成功 查询出每个账户每个类型一条成功的记录
时间: 2024-10-24 07:14:28 浏览: 16
20分钟MySQL基础入门
为了查询每个账户中每个状态(0代表成功,1代表失败)各有一条成功的记录,你可以使用子查询和 GROUP BY 子句来实现。假设表名为 `accounts`,字段包括 `id`, `account_name`, 和 `status`,可以尝试以下 SQL 语句:
```sql
SELECT a1.id, a1.account_name, a1.status
FROM accounts a1
JOIN (
SELECT account_id, MIN(status) as min_status
FROM accounts
WHERE status = 0
GROUP BY account_id
) a2 ON a1.id = a2.account_id AND a1.status = 0
LEFT JOIN accounts a3 ON a1.id = a3.id AND a3.status = 1 AND a2.min_status = 0
WHERE a3.id IS NULL
```
这个查询首先找出每个账户中状态为0的成功记录(子查询a2),然后在主查询中,它选择这些账户中状态仍为0的记录,并排除了状态为1的记录(通过 LEFT JOIN 并设置 WHERE 条件)。这样,结果就会包含每个账户中只有一条状态为0的成功记录。
阅读全文