Mysql 将两个sql查询合并为一个查询
我有两个mysql查询,希望将它们合并为一个Mysql 将两个sql查询合并为一个查询,mysql,sql,Mysql,Sql,我有两个mysql查询,希望将它们合并为一个 SELECT description CASE WHEN checkbox2 = '2' THEN '2' WHEN checkbox2 = '1' THEN '1' WHEN checkbox2 = '0' THEN '0' WHEN checkbox1 = '1' THEN '1' WHEN checkbox1 = '0' THEN '0' END 'checkbox_merge', FROM
SELECT description
CASE
WHEN checkbox2 = '2' THEN '2'
WHEN checkbox2 = '1' THEN '1'
WHEN checkbox2 = '0' THEN '0'
WHEN checkbox1 = '1' THEN '1'
WHEN checkbox1 = '0' THEN '0' END 'checkbox_merge',
FROM table2
LEFT JOIN table3
ON table2.id2 = table3.id2
ORDER BY table2.id2
这一个基本上是将两列“合并”为一列
SELECT description
CASE
WHEN checkbox2 = '2' THEN '2'
WHEN checkbox2 = '1' THEN '1'
WHEN checkbox2 = '0' THEN '0'
WHEN checkbox1 = '1' THEN '1'
WHEN checkbox1 = '0' THEN '0' END 'checkbox_merge',
FROM table2
LEFT JOIN table3
ON table2.id2 = table3.id2
ORDER BY table2.id2
这一个需要两个表,并旋转名称(A->D),并将它们用作列来绘制网格
SELECT description
MAX(CASE WHEN column1 = 'A' THEN checkbox1 ELSE '-' END) 'A',
MAX(CASE WHEN column1 = 'B' THEN checkbox1 ELSE '-' END) 'B',
MAX(CASE WHEN column1 = 'C' THEN checkbox1 ELSE '-' END) 'C',
MAX(CASE WHEN column1 = 'D' THEN checkbox1 ELSE '-' END) 'D',
FROM table1
JOIN table2
ON table2.id = table1.id
WHERE table2.id = var1 and table1.id = var1
GROUP BY description
因此,我想进行第一次查询,并使用复选框\u merge
代替第二次查询中的复选框1
有什么办法可以做到这一点吗?试试这个:
SELECT
description,
MAX(
CASE
WHEN column1 = 'A'
THEN (
CASE
WHEN checkbox2 = '2' THEN '2'
WHEN checkbox2 = '1' THEN '1'
WHEN checkbox2 = '0' THEN '0'
WHEN checkbox1 = '1' THEN '1'
WHEN checkbox1 = '0' THEN '0'
END
)
ELSE '-'
END
) 'A'
FROM
table1
JOIN table2
ON table2.id = table1.id
LEFT JOIN table3
ON table2.id2 = table3.id2
WHERE
table1.id = var1
GROUP BY description
试试这个:
SELECT
description,
MAX(
CASE
WHEN column1 = 'A'
THEN (
CASE
WHEN checkbox2 = '2' THEN '2'
WHEN checkbox2 = '1' THEN '1'
WHEN checkbox2 = '0' THEN '0'
WHEN checkbox1 = '1' THEN '1'
WHEN checkbox1 = '0' THEN '0'
END
)
ELSE '-'
END
) 'A'
FROM
table1
JOIN table2
ON table2.id = table1.id
LEFT JOIN table3
ON table2.id2 = table3.id2
WHERE
table1.id = var1
GROUP BY description
免责声明:这可以在SQL Server上使用,但不确定MySQL是否适用。只需将第一个查询嵌套在第二个查询中,类似于此模型:
SELECT description
MAX(CASE WHEN t2.column1 = 'A' THEN t1.checkbox_merge ELSE '-' END) 'A',
MAX(CASE WHEN t2.column1 = 'B' THEN t1.checkbox_merge ELSE '-' END) 'B',
MAX(CASE WHEN t2.column1 = 'C' THEN t1.checkbox_merge ELSE '-' END) 'C',
MAX(CASE WHEN t2.column1 = 'D' THEN t1.checkbox_merge ELSE '-' END) 'D',
FROM (
SELECT
CASE
WHEN checkbox2 = '2' THEN '2'
WHEN checkbox2 = '1' THEN '1'
WHEN checkbox2 = '0' THEN '0'
WHEN checkbox1 = '1' THEN '1'
WHEN checkbox1 = '0' THEN '0'
END as [checkbox_merge],
table2.id2 as [id]
FROM table2
LEFT JOIN table3
ON table2.id2 = table3.id2
ORDER BY table2.id2)
as t1
JOIN table2 t2
ON t1.id = t2.id
WHERE t2.id = var1 and t1.id = var1
GROUP BY t2.description
免责声明:这可以在SQL Server上使用,但不确定MySQL是否适用。只需将第一个查询嵌套在第二个查询中,类似于此模型:
SELECT description
MAX(CASE WHEN t2.column1 = 'A' THEN t1.checkbox_merge ELSE '-' END) 'A',
MAX(CASE WHEN t2.column1 = 'B' THEN t1.checkbox_merge ELSE '-' END) 'B',
MAX(CASE WHEN t2.column1 = 'C' THEN t1.checkbox_merge ELSE '-' END) 'C',
MAX(CASE WHEN t2.column1 = 'D' THEN t1.checkbox_merge ELSE '-' END) 'D',
FROM (
SELECT
CASE
WHEN checkbox2 = '2' THEN '2'
WHEN checkbox2 = '1' THEN '1'
WHEN checkbox2 = '0' THEN '0'
WHEN checkbox1 = '1' THEN '1'
WHEN checkbox1 = '0' THEN '0'
END as [checkbox_merge],
table2.id2 as [id]
FROM table2
LEFT JOIN table3
ON table2.id2 = table3.id2
ORDER BY table2.id2)
as t1
JOIN table2 t2
ON t1.id = t2.id
WHERE t2.id = var1 and t1.id = var1
GROUP BY t2.description
此外,我还删除了
table2.id=var1
,因为它与table1.id=var1
的条件相同,因为2个表由id
连接。我还删除了table2.id=var1
,因为它与table1.id=var1
的条件相同,因为2个表由id
连接,欢迎您。不要忘记标记为供其他人使用的解决方案。另外,请将您的编辑内容发回,这样示例就完整了。不客气。不要忘记标记为供其他人使用的解决方案。同时将编辑的内容发回,这样示例就完成了。