【问题标题】:creating new columns based off where conditions of existing table根据现有表的条件创建新列
【发布时间】:2016-11-16 19:25:26
【问题描述】:

我有一个表格,每个人的电子邮件地址在他们的会员 ID 旁边只有一次,但我想创建将他们的领导电子邮件地址放在同一行的列。

表 1

+-----------+--------+----------+----------+---------+
| member_id | name   | Email    | Dir_ID   | Leader_ID| 
+-----------+--------+----------+----------+----------
|       105 | Andri  |    em100 |     106  |   110    |
|       106 | Steve  |     em10 |    Null  |   Null
|       110 | Soraya |    em101 |     110  |   110
|       111 | Eva    |     em20 |     110  |   105
|       112 | Sonia  |     em40 |     105  |   111

我正在努力完成以下工作

查询/生成表

+-----------+--------+----------+----------+-------------+
| member_id | name   | Email    | Dir_Email| Leader_EMail| 
+-----------+--------+----------+----------+-------------+
|       105 | Andri  |    em100 |     em10 |   em101     |
|       106 | Steve  |     em10 |     Null |   Null
|       110 | Soraya |    em101 |     em10 |   em10
|       111 | Eva    |     em20 |    em101 |   em100
|       112 | Sonia  |     em40 |     em100|   em20

任何关于从哪里开始的信息将不胜感激。我正在考虑创建一个暗表,然后进行一些连接,但认为必须有一个更简单的方法。

【问题讨论】:

  • 我认为您可能需要向我们提供更多信息。你从哪里得到Dir_EmailLeader_EMail 来自
  • 所以您想将表 1 更改为表 2。我说的对吗?
  • @RiggsFolly 抱歉,可能不清楚,但Member_Id 是每个人的唯一代码,每个人都会出现在那里,Dir_ID& Leader_IDcome 只是 member_id's 的层次结构
  • 依然清澈如泥
  • 您要查询这两个现有的表吗?

标签: mysql sql join where


【解决方案1】:

您可以使用基于自连接的层次关系

   select a.member_id, a.name, a.Email, b.Dir_Email, a.Leader_ID
   from myTable as a 
   left join my_table b on a.dir_id = b.member_id

【讨论】:

  • 假设 OP 想要在现有表中创建 2 个新列并删除 2 个现有列,我错了吗?
  • @scaisedge,你是说我必须创建表 b 吗?或者可以加入自己的桌子上?第二个表是我想从表 1 中生成的查询或产品
  • 没有@AsimAhmed,是同一张表myTable,但使用别名ab来执行SELF JOIN
  • @AsimAhmed .. 就像 Juan Carlos Oropeza 所建议的 .. 是自联接别名是同一张表使用了两次
猜你喜欢
  • 2020-10-02
  • 2021-02-08
  • 2017-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-15
  • 2023-03-25
相关资源
最近更新 更多