MySQL:将同一表中的多个WHERE子句与diff列名称结合在一起

时间:2018-08-10 12:56:33

标签: mysql where-clause

我是MySQL的新手,正在通过PluralSight学习。我正在尝试执行结果为4列的查询。 4列中的3列来自同一列,但通过针对数字值的WHERE子句进行区分。此外,我包括了其他表中的一列。我觉得修复非常容易,但是正如我提到的,我对此并不陌生。各个部分的工作效果很好,但我不知道如何正确地加入它们。任何帮助,将不胜感激。到目前为止,我的工作包括在下面。

Select answer as FirstName
FROM glpi.glpi_plugin_formcreator_answers
WHERE plugin_formcreator_questions_id = 1

Select answer as MI
FROM glpi.glpi_plugin_formcreator_answers
WHERE plugin_formcreator_questions_id = 54 

Select answer as LastName
FROM glpi.glpi_plugin_formcreator_answers
WHERE plugin_formcreator_questions_id = 55

Select request_date
FROM glpi.glpi_plugin_formcreator_forms_answers

3 个答案:

答案 0 :(得分:0)

当我们有多个where子句时,通常使用并集。可以使用UNION子句。

Select answer as FirstName FROM glpi.glpi_plugin_formcreator_answers WHERE plugin_formcreator_questions_id = 1 UNION Select answer as MI FROM glpi.glpi_plugin_formcreator_answers WHERE plugin_formcreator_questions_id = 54 UNION Select answer as LastName FROM glpi.glpi_plugin_formcreator_answers WHERE plugin_formcreator_questions_id = 55 UNION Select request_date FROM glpi.glpi_plugin_formcreator_forms_answers

答案 1 :(得分:0)

尝试一下:

Select case when plugin_formcreator_questions_id=1 then answer end as FirstName,
case when plugin_formcreator_questions_id=54 then answer end as MI,
case when plugin_formcreator_questions_id=55 then answer end as LastName
FROM glpi.glpi_plugin_formcreator_answers

答案 2 :(得分:0)

这不是答案

由于我怀疑您缺少要求中的重要内容

我只想向您提供您要获得的东西的方法,唯一缺少的是GROUP BY列。

SELECT
   IF(plugin_formcreator_questions_id = 1,answer, null) as FirstName
   IF(plugin_formcreator_questions_id = 54,answer, null) as MI,
   IF(plugin_formcreator_questions_id = 55,answer, null) as LastName,
   request_date
FROM glpi.glpi_plugin_formcreator_answers
WHERE plugin_formcreator_questions_id IN (1,54,55)

因此最终版本应类似于:

SELECT
   form_id,
   MAX(IF(plugin_formcreator_questions_id = 1,answer, null)) as FirstName
   MAX(IF(plugin_formcreator_questions_id = 54,answer, null)) as MI,
   MAX(IF(plugin_formcreator_questions_id = 55,answer, null)) as LastName,
   MAX(request_date)
FROM glpi.glpi_plugin_formcreator_answers
WHERE plugin_formcreator_questions_id IN (1,54,55)
GROUP BY form_id