在mysql中使用IN运算符得到1292截断的不正确双精度值的警告
我正在尝试获取依赖于发票表的列的总数。我已经成功地编写了整个查询,但问题是,如果我写静态值,它会给出完美的结果,但是如果我写列名,它会给出错误的结果并带有警告(警告:#1292截断了不正确的双精度值…) 导致警告的查询为在mysql中使用IN运算符得到1292截断的不正确双精度值的警告,mysql,sql,Mysql,Sql,我正在尝试获取依赖于发票表的列的总数。我已经成功地编写了整个查询,但问题是,如果我写静态值,它会给出完美的结果,但是如果我写列名,它会给出错误的结果并带有警告(警告:#1292截断了不正确的双精度值…) 导致警告的查询为 SELECT job.customer_id, parties.name_of_establishment AS NAME, ((select IFNULL(SUM(job_details.sale_total),0) from job_deta
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
错在哪里?我已经浪费了两个小时来解决这个问题。我怀疑
sale\u invoice.items
是一个包含逗号分隔整数值的字符串。如果是这种情况,则中的
不起作用。
使用以下功能:
如果sale\u invoice.items
在项目之间包含空格,则必须删除它们:
WHERE FIND_IN_SET(job_details.id, REPLACE(sale_invoice.items, ' ', ''))
销售发票项目的数据类型是什么?发布样本数据以澄清。数据类型为“text”@forpas请提供样本数据和所需结果。SQL/DB小提琴会有所帮助。
WHERE FIND_IN_SET(job_details.id, REPLACE(sale_invoice.items, ' ', ''))