【问题标题】:I am trying to populate data from table1 to table2 .Is my sql query correct?我正在尝试将数据从 table1 填充到 table2 。我的 sql 查询是否正确?
【发布时间】:2015-12-08 07:34:19
【问题描述】:

table1

 EID     EMPLOYEE_NAME       DESIGNATION               REPORTING_MANAGER    FLAG
    1        TIM COOK            CEO                   Null                 Null
    2        MILLER              CTO                   TIM COOK             Null
    3        BRAD                COO                   TIM COOK             Null
    4        WILLIAM             HRD                   TIM COOK             Null
    5        JOHN                TECH MANAGER(DEV)     WILLIAM              Null
    6        WALLACE             TECH MANAGER(TEST)    WILLIAM              Null
    7        SUNDAR              SWIFT DEV             JOHN                 Null
    8        PETER               SWIFT DEV             JOHN                 Null
    9        STEVE               TEST ENGINEER         WALLACE              Null

table2

 EID     EMPLOYEE_NAME      REPORTING_MANAGER_ID

我想生成类似下面的东西

EID     EMPLOYEE_NAME      REPORTING_MANAGER_ID
    1        TIM COOK          Null
    2        MILLER            1
    3        BRAD              1
    4        WILLIAM           1
    5        JOHN              4
    6        WALLACE           4
    7        SUNDAR            5
    8        PETER             5
    9        STEVE             6

我尝试了以下查询,它运行成功,但没有在 table2 中插入数据。


INSERT INTO table2 (
    E_ID
    ,EMPLOYEE_NAME
    ,REPORTING_MANAGER_ID
    )
SELECT e.E_ID
    ,e.EMPLOYEE_NAME
    ,rm.E_ID AS REPORTING_MANAGER_ID
FROM table1 e
LEFT JOIN table1 rm ON rm.EMPLOYEE_NAME = e.REPORTING_MANAGER
WHERE e.FLAG = NULL

谁来帮帮我

【问题讨论】:

    标签: mysql sql sql-server sql-server-2008 sql-server-2012


    【解决方案1】:

    下面提到的两个查询将给出您需要的结果。

    -- 使用子查询

    插入表 2 ( 开斋节 ,员工姓名 ,REPORTING_MANAGER_ID ) 选择 t1.EID t1.Employee_Name, ( 选择 EID 从表 1 t2 WHERE t1.EMPLOYEE_NAME = t2.REPORTING_MANAGER ) 作为 REPORTING_MANAGER_ID FROM table1 t1

    --使用连接条件

    插入表 2 ( 开斋节 ,员工姓名 ,REPORTING_MANAGER_ID ) 选择 t1.EID, t1.EMPLOYEE_NAME, t2.REPORTING_MANAGER 从表 1 t1 左外连接表1 t2 ON t1.EMPLOYEE_NAME = t2.REPORTING_MANAGER

    【讨论】:

      【解决方案2】:
      INSERT INTO table2 (E_ID,EMPLOYEE_NAME,REPORTING_MANAGER_ID) 
       SELECT e.E_ID , e.EMPLOYEE_NAME, rm.E_ID 
       FROM table1 e 
       LEFT JOIN table1 rm ON rm.EMPLOYEE_NAME = e.REPORTING_MANAGER 
       WHERE e.FLAG is NULL
      

      如果您将列与null 进行比较,它会返回null,这将不会从您的select 语句中返回任何行。请改用is null

      【讨论】:

      • 感谢 VKP!还有一个帮助。这是正确的吗? INSERT INTO table1(FLAG) values('1') WHERE FLAG is null
      猜你喜欢
      • 1970-01-01
      • 2015-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-20
      • 1970-01-01
      • 1970-01-01
      • 2015-01-26
      相关资源
      最近更新 更多