我有以下查询以及它如何呈现完美无缺:
SELECT GROUP_CONCAT(total SEPARATOR '||') FROM (
(
SELECT GROUP_CONCAT(concat_ws('@', ps.name, apfps.value) ORDER BY TRIM(ps.name) SEPARATOR '||') AS total
FROM action_projects_finance__payment_sources AS apfps
LEFT JOIN payment_sources AS ps ON apfps.payment_source_id = ps.id
INNER JOIN action_projects_finance apf ON apf.id = apfps.action_projects_finance_id
RIGHT JOIN action_projects_additive apadd ON apadd.action_project_finance_id = apfps.action_projects_finance_id
WHERE (apfps.action_project_id = 2174)
AND (apfps.type IN ('fund')
))
UNION
(
SELECT GROUP_CONCAT(concat_ws('@', ps2.name, apfps2.value) ORDER BY TRIM(ps2.name) SEPARATOR '||') AS total
FROM action_projects_additive apadd2
INNER JOIN action_projects_finance__payment_sources apfps2 ON apadd2.action_project_finance_id = apfps2.action_projects_finance_id
LEFT JOIN payment_sources AS ps2 ON apfps2.payment_source_id = ps2.id
WHERE apadd2.action_project_id = 2174
AND apfps2.type = 'fund'
AND DATEDIFF(apadd2.date, (
SELECT MAX(date) FROM action_projects_additive apadd3
WHERE apadd3.type = 4 AND apadd3.action_project_id = 2174
)) >= 1
)
) a
最大的问题是2174中的值被静态设置为测试。
此查询只是较大查询的一列。
当您通过FROM子句的字段更改2174中的值时,匹配来自其他列的查询以及查询的位置如下所示:
SELECT (
SELECT GROUP_CONCAT(total SEPARATOR '||') FROM (
(
SELECT GROUP_CONCAT(concat_ws('@', ps.name, apfps.value) ORDER BY TRIM(ps.name) SEPARATOR '||') AS total
FROM action_projects_finance__payment_sources AS apfps
LEFT JOIN payment_sources AS ps ON apfps.payment_source_id = ps.id
INNER JOIN action_projects_finance apf ON apf.id = apfps.action_projects_finance_id
RIGHT JOIN action_projects_additive apadd ON apadd.action_project_finance_id = apfps.action_projects_finance_id
WHERE (apfps.action_project_id = action_projects.id)
AND (apfps.type IN ('fund')
))
UNION
(
SELECT GROUP_CONCAT(concat_ws('@', ps2.name, apfps2.value) ORDER BY TRIM(ps2.name) SEPARATOR '||') AS total
FROM action_projects_additive apadd2
INNER JOIN action_projects_finance__payment_sources apfps2 ON apadd2.action_project_finance_id = apfps2.action_projects_finance_id
LEFT JOIN payment_sources AS ps2 ON apfps2.payment_source_id = ps2.id
WHERE apadd2.action_project_id = action_projects.id
AND apfps2.type = 'fund'
AND DATEDIFF(apadd2.date, (
SELECT MAX(date) FROM action_projects_additive apadd3
WHERE apadd3.type = 4 AND apadd3.action_project_id = action_projects.id
)) >= 1
)
) a )
FROM action_projects
仅显示以下消息
'where子句'中的未知列'action_projects.id'