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

标签 mysql sql select

我正在尝试将来自两个表的数据合并到一个结果中。使用简化的示例表,这就是我想要得到的结果:

ID    Text                Choice
--------------------------------
1     My first choice     0
2     My second choice    0
3     My third choice     1

从两个表persons中选择

'人':

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

'Choices_made':

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 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

关于mysql - SQL - 将 select * 查询与 select 1 组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31395323/

相关文章:

java - 在 Spring/Java 中过滤特殊字符

Mysql-从数据库中选择所有表

mysql - 链接 MySQL 表中的行

c - 在 Select 中阻止一个客户端而不阻止其他人

javascript - 具有唯一选择的多选下拉列表 - React JS

mysql - 使用 id 对数据进行分组并从第一行和最后一行获取数据

mysql - SQL中IF语句中的WHERE条件

php - Sql-插入带回车的文本

sql - 帮助我理解嵌套 SELECT 语句的这种特殊用法

sql - 如何通过unicode where条件选择数据?