【问题标题】:Join 2 tables and create a new row showing if table 2 exists in table 1加入 2 个表并创建一个新行,显示表 2 是否存在于表 1 中
【发布时间】:2023-03-17 15:39:01
【问题描述】:

我有这两张桌子

表 1

+-----------+----------+
| 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 中?

提前致谢!

【问题讨论】:

  • 为什么第二行会有school_id=2314?这些信息来自哪里?
  • 它来自另一个名为学校的表,表 2 具有表 1 和其他学校表中的两个主键,但我从表 2 中提取数据,这就是为什么我只将这 2 个放在问题上跨度>
  • 欢迎来到 StackOverflow!到目前为止,您尝试过什么吗?在这里,我们希望您try to solve your own problem first,因为您的尝试有助于我们更好地了解您想要什么。请尝试一下,然后更新您的问题以显示您在minimal, complete, and verifiable example 中遇到的特定问题。如需更多信息,请参阅how to ask good questions,并拨打tour of the site :)
  • 如果您的Table 1 也有school_id 列,那会容易得多。
  • 能否请您也出示一下您的schools 表?看看我们能不能从中做点什么。

标签: mysql database join null case


【解决方案1】:

你是什么意思表1在表2中“是”? 字段 support_id 是否与表 2 中的 support_id 相同? 还是字段或者school_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;

【讨论】:

  • 是的,support_id 在两个表中并且是外键,我刚刚尝试了您的查询,只得到一列“2314 | 1 | Yes”,但不能为“ 2314 | 2 | 否" :(
  • 那么你的数据有些不同,我想你的意思是一行正确吗?此选择应返回所有值。由于某种原因,support_id 可能不同且不匹配(可能是空格?不同的列类型,如 int = varchar?)还要检查数据是否正确插入 table2 和 table1。
【解决方案2】:

我会使用左连接,然后使用 case 表达式来格式化结果:

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

【讨论】:

  • 你好,我刚刚做了你的查询,它只显示“2314 | 1 | Yes”,但不显示“2314 | 2 | No”:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-07
  • 1970-01-01
相关资源
最近更新 更多