我是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
答案 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