sql查询一张表的两条指定id不一样的数据
时间: 2024-05-30 08:13:06 浏览: 109
可以使用如下SQL语句进行查询:
SELECT * FROM 表名 WHERE id = 'xxx' OR id = 'yyy' AND id <> 'zzz'
其中,xxx和yyy为两个不同的id值,zzz为这两个id值中相同的那个id。这个查询语句会返回表中id为xxx和yyy的两条记录,但会排除掉id为zzz的记录。
相关问题
sql查询一张表的两条id不一样的数据
可以使用以下SQL语句查询出一张表中ID不相同的两条数据:
SELECT *
FROM 表名
WHERE ID IN (
SELECT ID
FROM 表名
GROUP BY ID
HAVING COUNT(ID) = 2
)
ORDER BY ID;
该查询语句将会返回表中ID不相同的两条数据。
mysql5.7版本 还款明细表有ID,合同号,期次,实还金额,实还日期,是否提前结清 其中有两条数据除了ID和实还金额不一样,其余都相同,怎么写sql取其中非提前结清的一个ID,并将两条数据的实还金额汇总成一条数据
在MySQL 5.7中,你可以使用`DISTINCT ON`关键字结合`COALESCE`函数来解决这个问题。假设你的还款明细表名为`repayment_details`,且字段名如你所描述:
```sql
SELECT id, contract_no, period, MAX(COALESCE(pre_payment_clear, real_amount)) AS real_amount,
MAX(CASE WHEN pre_payment_clear = true THEN '提前结清' ELSE '正常偿还' END) AS status
FROM repayment_details
WHERE id NOT IN (SELECT id FROM repayment_details WHERE pre_payment_clear = true)
GROUP BY contract_no, period
ORDER BY contract_no, period;
```
这里做了两件事:
1. `DISTINCT ON (contract_no, period)`:选取每个`contract_no`和`period`组合下唯一的一条记录,排除了提前结清的情况。
2. 使用`MAX(COALESCE(pre_payment_clear, real_amount))`:当`pre_payment_clear`存在并且值为true时,显示为提前结清,否则显示`real_amount`作为实还金额。
3. `MAX(CASE WHEN pre_payment_clear = true THEN '提前结清' ELSE '正常偿还' END)`:确定支付状态。
阅读全文