我在执行查询的两种不同方式中发现了一个奇怪的 MySQL 问题。当你把所有东西都归结起来时,这种方式会返回更多结果:
SELECT DISTINCT <stuff> FROM <tables>
WHERE promo_detail_store_id in (8214, 8217, 4952, 8194, ...)
对 WHERE 子句的这种更改会产生这些结果的一个子集:
WHERE promo_detail_store_id in ('8214, 8217, 4952, 8194, ...')
(promo_detail_store_id 在 MyISAM 表中定义为 BIGINT。)
最初 store_ids 的列表要长得多,我开始把它剪得越来越短,我想也许对字符串的长度有一些奇怪的限制。但是不,它也适用于非常小的字符串/列表。很明显,幕后发生了一些事情,涉及类型强制以及“in”运算符的工作方式。有人可以启发我吗?