我发现了一个奇怪的问题。以下是查询:
SELECT *, @allaccts := TRIM( BOTH ',' FROM owneridslinked4billing) as
targetids, ( select sum(price) from orderstable where
paymentstatus='unpaid' and ownid in (@allaccts) ) as amountdue FROM users
问题是targetId的输出是:
110909,110910,110911,110912
(完全符合要求)
但是查询输出了错误的结果。在查询“and ownid in(@allaccts)”中不包括所有ID(110909110910110911110912)。我猜它是把所有逗号分隔的值作为一个值,而不是单独的值,所以输出错误的结果。
我希望这有道理。
我只想让mysql使用 owneridslinked4billing
字段并输出结果,其中 ownid
在 owneridslinked4billing
(这是以逗号分隔的ID列表)。
1条答案
按热度按时间6ie5vjzr1#
使用
FIND_IN_SET
可能会立即修复:假设你的目的是找到一个
ownid
所有帐户的csv列表中的值110909,110910,110911,110912
.向前看,你应该避免
FIND_IN_SET
和csv数据,并规范化您的数据。将每个id移到一个单独的行并进行连接。