我想根據三列匹配來選擇重複記錄。三元組列表可能會很長(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