Sto provando a selezionare i record duplicati in base a una corrispondenza di tre colonne. L'elenco delle triple potrebbe essere molto lungo (1000), quindi mi piacerebbe renderlo conciso.Clausole MySQL IN, cercando di far corrispondere la lista IN delle tuple
Quando ho un elenco di dimensioni 10 (noto duplicati) corrisponda solo 2 (quelli apparentemente casuali) e manca l'altra 8. mi aspettavo 10 record di tornare, ma ho visto solo 2.
ho ridotto a questo problema:
Questo restituisce un record. Expecting 2:
select *
from ali
where (accountOid, dt, x) in
(
(64, '2014-03-01', 10000.0),
(64, '2014-04-23', -122.91)
)
restituisce due record, come previsto:
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))
Tutte le idee perché la prima query restituisce solo un record?
sono riuscito a riprodurre il problema sulla mia macchina (MySQL 5.6 .14). Puoi fare un violino? – Vatev
Puoi modificare la tua domanda e descrivere i tipi di dati delle colonne ('SHOW CREATE TABLE ali')? Se stai usando 'FLOAT' o' DOUBLE' per colonna 'x', i confronti di uguaglianza possono fallire perché il valore esatto viene arrotondato in modi imprevisti. Inoltre, si prega di specificare esattamente quale versione di MySQL si usa. –
Puoi pubblicare il codice che stai utilizzando. L'ho copiato su un tavolo e all'inizio sembrava che fosse un valore di un operando, ma è stata colpa mia se mancava una parentesi. Come Vatev non ero in grado di riprodurre il problema – DanceSC