这表明在 MySQL 数据库中进行操作时,涉及到的两个表或列使用了不同的字符集排序规则 -collation 。具体来说,一个是 utf8mb4_general_ci,另一个是 utf8mb4_0900_ai_ci。这种差异导致 MySQL 无法正确处理字符串比较或连接操作,JSON_TABLE
也是一样。
下面这个方式,写 SQL 的时候,可以解决(FYI):
SELECT * FROM `__TABLE_1__` B JOIN JSON_TABLE( F0001411Field->>'$.subDataIds', '$[*]' COLUMNS ( subDataId VARCHAR(255) PATH '$' ) ) AS `J` LEFT JOIN `__TABLE_2__` C ON B.associateCustomerField->>'$.associateDataId' = C.`dataId` LEFT JOIN `__TABLE_3__` S ON S.dataId = J.subDataId COLLATE utf8mb4_general_ci WHERE .... ORDER BY 1 DESC
注意上面最后部分:ON S.dataId = J.subDataId COLLATE utf8mb4_general_ci。