I have racked my brain to understand why the newish SQLite3.dll behaves differently for this query? I only want to retrieve 1 row from this table. 2 12000.0 31.2 26.12 -12.11 -12.22 1.12 If I comment out the ON clause, it works. But, I never had to do that in earlier versions of SQLite3.dll. Please advise why I see 3 rows now? I also confirmed this behavior manually with DB Browser For SQLite. Older versions yield only 1 row. Newest version yields 3 rows! :( -- Create SQLite database -- CREATE TABLE TD(`n(id)` INTEGER NOT NULL PRIMARY KEY, `TI(id)` INTEGER DEFAULT -999, `DieSN` TEXT DEFAULT '-999', `Die(n)` INTEGER DEFAULT -999, `Die(wm)` DOUBLE DEFAULT -999, `DieX(um)` INTEGER DEFAULT -999, `DieY(um)` INTEGER DEFAULT -999, `DieZ(um)` INTEGER DEFAULT -999, `DieM(mm)` DOUBLE DEFAULT -999, `DieA(°)` DOUBLE DEFAULT -999, `Bin(n)` INTEGER DEFAULT -999, `TT(s)` DOUBLE DEFAULT -999, `TTp(s)` DOUBLE DEFAULT -999, `n(n)` INTEGER DEFAULT -999, `TPG(n)` INTEGER DEFAULT -999, `T(C)` DOUBLE DEFAULT -999, `Vdd(V)` DOUBLE DEFAULT -999, `Idd(A)` DOUBLE DEFAULT -999, `RFPath` TEXT DEFAULT '-999', `Pi(dBm)` DOUBLE DEFAULT -999, `F(MHz)` DOUBLE DEFAULT -999, `S21(dB)` DOUBLE DEFAULT -999, `S11(dB)` DOUBLE DEFAULT -999, `S22(dB)` DOUBLE DEFAULT -999, `NF(dB)` DOUBLE DEFAULT -999); -- INSERT DATA -- INSERT INTO TD (`TI(id)`,`Die(n)`,`TPG(n)`,`Idd(A)`,`F(MHz)`,`S21(dB)`,`S11(dB)`,`S22(dB)`,`NF(dB)`) VALUES (1,1,1,-999, -999, -999, -999, -999, -999); INSERT INTO TD (`TI(id)`,`Die(n)`,`TPG(n)`,`Idd(A)`,`F(MHz)`,`S21(dB)`,`S11(dB)`,`S22(dB)`,`NF(dB)`) VALUES (1,1,2,0.0206,6000, 26.06, -6.11, -6.22,-999); INSERT INTO TD (`TI(id)`,`Die(n)`,`TPG(n)`,`Idd(A)`,`F(MHz)`,`S21(dB)`,`S11(dB)`,`S22(dB)`,`NF(dB)`) VALUES (1,1,2,0.0212,12000,26.12,-12.11,-12.22,-999); INSERT INTO TD (`TI(id)`,`Die(n)`,`TPG(n)`,`Idd(A)`,`F(MHz)`,`S21(dB)`,`S11(dB)`,`S22(dB)`,`NF(dB)`) VALUES (1,1,2,0.0218,18000,26.18,-18.11,-18.22,-999); INSERT INTO TD (`TI(id)`,`Die(n)`,`TPG(n)`,`Idd(A)`,`F(MHz)`,`S21(dB)`,`S11(dB)`,`S22(dB)`,`NF(dB)`) VALUES (1,1,3,0.0306,6000, -999, -999, -999, 1.06); INSERT INTO TD (`TI(id)`,`Die(n)`,`TPG(n)`,`Idd(A)`,`F(MHz)`,`S21(dB)`,`S11(dB)`,`S22(dB)`,`NF(dB)`) VALUES (1,1,3,0.0312,12000,-999, -999, -999, 1.12); INSERT INTO TD (`TI(id)`,`Die(n)`,`TPG(n)`,`Idd(A)`,`F(MHz)`,`S21(dB)`,`S11(dB)`,`S22(dB)`,`NF(dB)`) VALUES (1,1,3,0.0318,18000,-999, -999, -999, 1.18); -- 7 TD rows inserted. -- JOIN + ON Query -- SELECT r1.`F(MHz)` AS `F(MHz)`,r2.`Idd(A)`*1e3 AS `Idd(mA)`, r1.`S21(dB)` AS `S21(dB)`,r1.`S11(dB)` AS `S11(dB)`,r1.`S22(dB)` AS `S22(dB)`, r2.`NF(dB)` AS `NF(dB)` FROM (SELECT `F(MHz)`,`S21(dB)`,`S11(dB)`,`S22(dB)` FROM TD WHERE `TI(id)` = 1 AND `Die(n)` = 1 AND `F(MHz)` = 12000 AND `TPG(n)` = 2) AS r1 JOIN (SELECT `Idd(A)`,`F(MHz)`,`NF(dB)` FROM TD WHERE `TI(id)` = 1 AND `Die(n)` = 1 AND `F(MHz)` = 12000 AND `TPG(n)` = 3) AS r2 ON r1.`F(MHz)` = r2.`F(MHz)` -- JOIN + ON Query Results -- 6000.0 31.2 26.06 -6.11 -6.22 1.12 12000.0 31.2 26.12 -12.11 -12.22 1.12 18000.0 31.2 26.18 -18.11 -18.22 1.12