我想根据三列匹配来选择重复记录。三元组列表可能会很长(1000),所以我想简要说明一下。MySql IN子句,试图匹配IN元组列表
当我有大小10(称为副本)的列表,它只匹配2(看似随机的),错过其他8.我预计10条记录返回,但只看到了2
我已经缩小到这个问题:
这将返回一条记录。期待二:
select *
from ali
where (accountOid, dt, x) in
(
(64, '2014-03-01', 10000.0),
(64, '2014-04-23', -122.91)
)
返回两个记录,符合市场预期:
select *
from ali
where (accountOid, dt, x) in ((64, '2014-03-01', 10000.0))
or (accountOid, dt, x) in ((64, '2014-04-23', -122.91))
任何想法,为什么第一个查询只返回一个记录?
我无法重现我的机器上的问题(的MySQL 5.6 0.14)。你可以做小提琴吗? – Vatev
你可以编辑你的问题并描述列的数据类型('SHOW CREATE TABLE ali')吗?如果对'x'列使用'FLOAT'或'DOUBLE',它可能导致等值比较失败,因为精确值会以意想不到的方式舍入。另请指明您使用的是哪个版本的MySQL。 –
你可以发布你正在使用的代码吗?我将它复制到一张表中,起初它看起来像是一个操作数值,但这是我错误地忽略了一个括号集。像Vatev一样,我无法再现问题 – DanceSC