mysql - 在 mysql 中使用 IN 运算符收到 1292 截断不正确的 DOUBLE 值的警告
问题描述
我正在尝试获取依赖于发票表的列的总数。我已经成功编写了整个查询,但问题是如果我写静态值,它会给出完美的结果,但如果我写列名,它会给出错误的结果并发出警告(警告:#1292 截断不正确的 DOUBLE 值...... )。
导致警告的查询是
SELECT
job.customer_id,
parties.name_of_establishment AS NAME,
((select IFNULL(SUM(job_details.sale_total),0) from job_details WHERE job_details.id IN (sale_invoice.items))) AS sale,
(
SELECT
IFNULL(SUM(payments.amount),
0) AS paid
FROM
payments
WHERE
payments.p_type = 'get' AND payments.p_c_id = sale_invoice.customer_id AND payments.company_id = '1'
) AS paid
FROM
job
INNER JOIN sale_invoice ON sale_invoice.job_id = job.id
INNER JOIN parties ON parties.id = sale_invoice.customer_id
WHERE
company_id = '1' AND parties.name_of_establishment LIKE '%%'
GROUP BY
job.customer_id
ORDER BY
parties.name_of_establishment
查询结果完美的是
SELECT
job.customer_id,
parties.name_of_establishment AS NAME,
((select IFNULL(SUM(job_details.sale_total),0) from job_details WHERE job_details.id IN (8,1,5,7))) AS sale,
(
SELECT
IFNULL(SUM(payments.amount),
0) AS paid
FROM
payments
WHERE
payments.p_type = 'get' AND payments.p_c_id = sale_invoice.customer_id AND payments.company_id = '1'
) AS paid
FROM
job
INNER JOIN sale_invoice ON sale_invoice.job_id = job.id
INNER JOIN parties ON parties.id = sale_invoice.customer_id
WHERE
company_id = '1' AND parties.name_of_establishment LIKE '%%'
GROUP BY
job.customer_id
ORDER BY
parties.name_of_establishment
错误在哪里?我已经浪费了 2 个小时来弄清楚这一点。
解决方案
我怀疑这sale_invoice.items
是一个包含逗号分隔整数值的字符串。
如果是这种情况,则IN
不起作用。
使用功能FIND_IN_SET()
:
WHERE FIND_IN_SET(job_details.id, sale_invoice.items)
如果sale_invoice.items
项目之间包含空格,则必须删除它们:
WHERE FIND_IN_SET(job_details.id, REPLACE(sale_invoice.items, ' ', ''))
推荐阅读
- reactjs - 创建新的反应应用程序时如何停止权限
- python - Django:更新帖子后,我怎样才能使“更新”成功消息暂时,直到我刷新页面。因为现在刷新后它仍然存在
- github - 通过 Github 发布网站时出现“找不到页面”错误
- python - 带有用户输入的 FizzBuzz 类型游戏 - 整数错误
- python - Python - BeautifulSoup 不会产生相同的代码
- python - 在 Python 中填充具有不同名称的列
- r - 尝试使用 ranger 插入插入符号时出错
- python - await 不返回具有线程中设置的值的未来值
- javascript - 无法在 useEffect 挂钩中测试超时功能
- html - 在 Django 中发送带有附件的 Gmail