Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 将两个sql查询合并为一个查询_Mysql_Sql - Fatal编程技术网

Mysql 将两个sql查询合并为一个查询

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

我有两个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 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
连接,欢迎您。不要忘记标记为供其他人使用的解决方案。另外,请将您的编辑内容发回,这样示例就完整了。不客气。不要忘记标记为供其他人使用的解决方案。同时将编辑的内容发回,这样示例就完成了。