Mysql 联接两个表并创建一个新行,显示表1中是否存在表2
我有这两张桌子 表1Mysql 联接两个表并创建一个新行,显示表1中是否存在表2,mysql,database,join,null,case,Mysql,Database,Join,Null,Case,我有这两张桌子 表1 +-----------+----------+ | support_id| Name | +-----------+----------+ | 1 | Name 1 | | 2 | Name 2 | +-----------+----------+ 表2 +-----------+----------+ | school_id | support_id| +-----------+----------+ | 2314
+-----------+----------+
| support_id| Name |
+-----------+----------+
| 1 | Name 1 |
| 2 | Name 2 |
+-----------+----------+
表2
+-----------+----------+
| school_id | support_id|
+-----------+----------+
| 2314 | 1 |
+-----------+----------+
期望输出
+-----------+----------+------------+
| school_id |support_id| has |
+-----------+----------+------------+
| 2314 | 1 | Yes |
| 2314 | 2 | No |
+-----------+----------+------------+
如何添加第三行,告诉我表2是否在表1中
提前谢谢 表2中的表1“是”是什么意思?
现场支持id与表2中的支持id相同?
或者场地或学校id是相同的
为了建立连接(外键)、连接并连接两个表,需要两个表中的字段相同
考虑到support_id是外键(两个表之间共享的值),您可以使用以下选择:
SELECT school_id, IF(support_id is not null, "Yes", "No") as Has
FROM table1 LEFT JOIN table2
ON table1.support_id = table2.support_id;
我将使用左连接,然后使用
大小写
表达式格式化结果:
SELECT t2.*, CASE WHEN t1.support_id IS NOT NULL THEN 'Yes' ELSE 'No' END
FROM t2
LEFT JOIN t1 ON t2.support_id = t1.support_id
为什么第二排的学校id=2314?这个信息来自哪里?它来自另一个名为schools的表,表2有表1和其他schools表中的两个主键,但我从表2中提取数据,这就是为什么我只将这两个表放在问题上欢迎使用StackOverflow!到目前为止你试过什么吗?在这里,我们期待您的帮助,因为您的尝试有助于我们更好地了解您想要什么。请尝试一些操作,然后更新您的问题以显示您在某个应用程序中遇到的特定问题。欲了解更多信息,请参阅,并选择:)如果您的
表1
也有学校id
列,那么这将更容易操作。您能否同时显示您的学校
表?您好,我刚刚做了您的查询,它只显示了“2314 | 1 | Yes”,但没有显示“2314 | 2 | No”:(是的,support | id在两个表中都是外键,我刚刚尝试了您的查询,只得到了一列“2314 | 1 | Yes”,但无法为“2314 | 2 | No”生成第二列):(那么,您的数据有些不同,我想您的意思是一行正确吗?此选择应返回所有值。出于某些原因,支持id可能不同且不匹配(可能是空格?不同的列类型,如int=varchar?),还应检查数据是否正确插入表2和表1中。