gpt4 book ai didi

mysql - 在查询中使用来自同一个 mysql 表的数据

转载 作者:行者123 更新时间:2023-11-29 07:32:43 25 4
gpt4 key购买 nike

我发现了一个奇怪的问题。这是查询:

SELECT *, @allaccts := TRIM( BOTH  ',' FROM owneridslinked4billing) as 
targetids, ( select sum(price) from orderstable where
paymentstatus='unpaid' and ownid in (@allaccts) ) as amountdue FROM users

问题是 targetids 的输出是:

110909,110910,110911,110912

(正是需要的)

但是查询输出了错误的结果。它不包括查询“和 ownid in (@allaccts)”中的所有 ID (110909,110910,110911,110912)。我猜它是将所有逗号分隔值作为一个而不是单独的值,因此输出错误的结果。

我希望这是有道理的。

我只想让 mysql 在查询中使用 owneridslinked4billing 字段的数据,并输出 ownidowneridslinked4billing 中的结果(这是一个逗号分隔的 ID 列表)。

最佳答案

使用 FIND_IN_SET 可能会立即解决此问题:

SELECT *, @allaccts := TRIM( BOTH ',' FROM owneridslinked4billing) as targetids,
( select sum(price) from orderstable
where paymentstatus='unpaid' and
FIND_IN_SET(ownid, @allaccts) > 0 ) as amountdue
FROM users;

假设您的目的是在所有帐户 110909,110910,110911,110912 的 CSV 列表中找到一个 ownid 值。

展望 future ,您通常应该避免使用 FIND_IN_SET 和 CSV 数据,并规范化您的数据。将每个 ID 移到单独的行并进行连接。

关于mysql - 在查询中使用来自同一个 mysql 表的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50490177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com