Mysql SQL-将select*查询与select 1组合

Mysql SQL-将select*查询与select 1组合,mysql,sql,select,Mysql,Sql,Select,我试图将两个表中的数据合并到一个结果中。通过简化的示例表,我希望得到以下结果: ID Text Choice -------------------------------- 1 My first choice 0 2 My second choice 0 3 My third choice 1 从这两张桌子上选一个人 “人”: ID Name Age ------------------- 1

我试图将两个表中的数据合并到一个结果中。通过简化的示例表,我希望得到以下结果:

ID    Text                Choice
--------------------------------
1     My first choice     0
2     My second choice    0
3     My third choice     1
从这两张桌子上选一个人

“人”:

ID      Name    Age
-------------------
1       Adam    22
2       Scott   25
3       Tom     28
“选择”:

ID    Text
----------------------
1     My first choice
2     My second choice
3     My third choice
“做出的选择”:

Person_ID    Choice_ID
----------------------
2            3
我尝试了一些不同的查询,但没有找到正确的查询。我在尝试此查询时卡住了:

SELECT * FROM (
(SELECT * FROM Choices) t1
UNION
(SELECT 1 as Choice FROM Choices_made WHERE Person_ID=2) t2
) t_union
。。。这是行不通的。它会导致错误1064-您的SQL语法有错误


有没有关于如何实现所需结果的建议?

您可以尝试下一个查询

SELECT c.id,
       c.text, 
       cm.Choice_ID = c.id as persons_choice
FROM Choices c
LEFT JOIN Choices_made cm on cm.Choice_ID = c.id
                         and cm.Person_ID = 2
SELECT Choices.*
      ,IF(Choices_made.Choice_ID IS NULL, 0, 1) AS Choice
FROM Choices
     LEFT JOIN Choices_made ON Choices_made.Choice_ID = Choices.ID AND Choices_made.Person_ID = @PersonID

您可以尝试下一个查询

SELECT Choices.*
      ,IF(Choices_made.Choice_ID IS NULL, 0, 1) AS Choice
FROM Choices
     LEFT JOIN Choices_made ON Choices_made.Choice_ID = Choices.ID AND Choices_made.Person_ID = @PersonID

您可以尝试下一个查询

SELECT Choices.*
      ,IF(Choices_made.Choice_ID IS NULL, 0, 1) AS Choice
FROM Choices
     LEFT JOIN Choices_made ON Choices_made.Choice_ID = Choices.ID AND Choices_made.Person_ID = @PersonID

您可以尝试下一个查询

SELECT Choices.*
      ,IF(Choices_made.Choice_ID IS NULL, 0, 1) AS Choice
FROM Choices
     LEFT JOIN Choices_made ON Choices_made.Choice_ID = Choices.ID AND Choices_made.Person_ID = @PersonID
你可以用左键连接 然后在将第三个字段设置为1或0时使用该用例

SELECT p.id as , c.text, 
CASE 
WHEN cm.choice_id <> 0 then 1
ELSE 
0
END
as Choice
from persons as p
left join choices as c on c.id = p.id
left join choices_made as cm on cm.personid = p.id
你可以用左键连接 然后在将第三个字段设置为1或0时使用该用例

SELECT p.id as , c.text, 
CASE 
WHEN cm.choice_id <> 0 then 1
ELSE 
0
END
as Choice
from persons as p
left join choices as c on c.id = p.id
left join choices_made as cm on cm.personid = p.id
你可以用左键连接 然后在将第三个字段设置为1或0时使用该用例

SELECT p.id as , c.text, 
CASE 
WHEN cm.choice_id <> 0 then 1
ELSE 
0
END
as Choice
from persons as p
left join choices as c on c.id = p.id
left join choices_made as cm on cm.personid = p.id
你可以用左键连接 然后在将第三个字段设置为1或0时使用该用例

SELECT p.id as , c.text, 
CASE 
WHEN cm.choice_id <> 0 then 1
ELSE 
0
END
as Choice
from persons as p
left join choices as c on c.id = p.id
left join choices_made as cm on cm.personid = p.id


你能解释一下你期望的结果吗?此外,用于union的select查询的列计数不同,这会导致错误。i、 e.从带有2列的选择返回结果集中选择*,当从Person_ID=2的选项中选择1作为选项时,返回单列。这两个表有什么共同点?结果应该是表'Choices'中行的完整列表,但有一个额外的列'Choice',指示Person Scott选择了什么选项。这两个表'Persons'和'Choices'中没有任何内容通常,它们只是由主键组合在第三个表“Choices_Make”中。您能解释一下预期结果的列吗?此外,用于union的select查询的列计数不同,这会导致错误。i、 e.从带有2列的选择返回结果集中选择*,当从Person_ID=2的选项中选择1作为选项时,返回单列。这两个表有什么共同点?结果应该是表'Choices'中行的完整列表,但有一个额外的列'Choice',指示Person Scott选择了什么选项。这两个表'Persons'和'Choices'中没有任何内容通常,它们只是由主键组合在第三个表“Choices_Make”中。您能解释一下预期结果的列吗?此外,用于union的select查询的列计数不同,这会导致错误。i、 e.从带有2列的选择返回结果集中选择*,当从Person_ID=2的选项中选择1作为选项时,返回单列。这两个表有什么共同点?结果应该是表'Choices'中行的完整列表,但有一个额外的列'Choice',指示Person Scott选择了什么选项。这两个表'Persons'和'Choices'中没有任何内容通常,它们只是由主键组合在第三个表“Choices_Make”中。您能解释一下预期结果的列吗?此外,用于union的select查询的列计数不同,这会导致错误。i、 e.从带有2列的选择返回结果集中选择*,当从Person_ID=2的选项中选择1作为选项时,返回单列。这两个表有什么共同点?结果应该是表'Choices'中行的完整列表,但有一个额外的列'Choice',指示Person Scott选择了什么选项。这两个表'Persons'和'Choices'中没有任何内容常见的是,它们只是由主键组合在第三个表“Choices_Make”中。谢谢!这帮我得到了我想要的。有没有办法用零替换空值?谢谢!这帮我得到了我想要的。有没有办法用零替换空值?谢谢!这帮我得到了我想要的。有没有办法用零替换空值?谢谢!这帮助我得到了我想要的。有没有办法用零替换空值?