mysql 修改最大值_MySQL:根据最大值删除记录

我有一个包含两个外键的表.我需要删除key1&中的所有行. key2相同,但val< $x.

密钥1和key2不是不同的值;可能有多个记录具有相同的key1和/或key1 / key2对.

我已经尝试了几种方法,但是什么也做不了.到目前为止,每种方法都会导致MySQL错误(例如“无法重新打开表”)或错误的结果.

表中的样本数据:

rownum key1 key2 val col col2 col3 col4

1 123 1 2 a b c d

2 123 1 2 e f g h

3 123 2 3 i j k l

4 123 2 3 m n o p

5 456 1 1 q r s t

我需要删除“ val”为

换句话说,对于每个不同的key1 / key2组合,我需要找到最大的“ val”($x),并删除val为

因此,delete语句之后的期望输出是:

rownum key1 key2 val col col2 col3 col4

3 123 2 3 i j k l

4 123 2 3 m n o p

5 456 1 1 q r s t

(col-col4与确定删除哪些记录无关,我之所以包括它们,只是为了注意该表包括其他列.)

key1,key2和“ val”均为int类型.

如何删除key1& key2相同,但val< $x?

解决方法:

使用多表删除语法,通过该语法使用关键字段将表自身连接起来:

DELETE t1 FROM table1 t1, table1 t2

WHERE t1.key1=t2.key1 AND t1.key2=t2.key2 AND t1.val < t2.val

Sqlfiddle-我修改了示例数据,以使键对具有不同的值.

标签:mysql

来源: https://codeday.me/bug/20191119/2032332.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值