【问题标题】:Unable to execute the query无法执行查询
【发布时间】:2016-01-27 19:54:20
【问题描述】:

当我输入如下所示的代码时,我得到了这个错误:

消息 116,第 16 级,状态 1,第 1 行
当子查询不使用 EXISTS 引入时,选择列表中只能指定一个表达式。

代码:

SELECT 
    E_ID, E_NAME, PROJECT, MANAGER
FROM 
    EMPLOYEE_PROJECT 
INNER JOIN 
    EMP_MASTER ON (EMPID = E_ID AND LOCATION = 'MUMBAI' AND 
                   E_ID NOT IN (SELECT * FROM SALARY_ADVANCE))

【问题讨论】:

  • @Pala 您正在使用哪个 RDBMS..
  • 将 * 替换为仅 eid 字段,如下所示...

标签: sql sql-server


【解决方案1】:

问题来了

 E_ID NOT IN (SELECT * FROM SALARY_ADVANCE))

你必须提到一列而不是全部

【讨论】:

    【解决方案2】:

    这一行的问题:

    E_ID NOT IN (SELECT * FROM SALARY_ADVANCE)
    

    您应该提及您在此 SELECT 中检查的字段。否则你会得到一个表集而不是一组值。

    E_ID NOT IN (SELECT FIELD_NAME FROM SALARY_ADVANCE)
    

    【讨论】:

      【解决方案3】:

      NOT IN 有点棘手,因为如果从子查询返回 NULL,它会返回零行。在许多情况下,可能不是预期的...在子查询中添加 IS NOT NULL 以避免这种情况。

      SELECT E_ID, 
             E_NAME, 
             PROJECT, 
             MANAGER
        FROM EMPLOYEE_PROJECT INNER JOIN EMP_MASTER ON 
               EMPID = E_ID AND 
               LOCATION = 'MUMBAI' AND 
               E_ID NOT IN (SELECT E_ID 
                              FROM SALARY_ADVANCE
                            WHERE E_ID IS NOT NULL)
      

      您也可以重新写入NOT EXISTS,这是 null 安全的!

      SELECT E_ID, 
             E_NAME, 
             PROJECT, 
             MANAGER
        FROM EMPLOYEE_PROJECT INNER JOIN EMP_MASTER ON (
               EMPID = E_ID AND 
               LOCATION = 'MUMBAI' AND 
               NOT EXISTS (SELECT E_ID 
                           FROM SALARY_ADVANCE as SA
                           WHERE SA.E_ID = EMP*table*.E_ID))
      

      【讨论】:

        【解决方案4】:
        SELECT E_ID, 
               E_NAME, 
               PROJECT, 
               MANAGER
          FROM EMPLOYEE_PROJECT INNER JOIN EMP_MASTER ON 
                 EMPID = E_ID AND 
                 LOCATION = 'MUMBAI' AND 
                 E_ID NOT IN (SELECT E_ID 
                                FROM SALARY_ADVANCE)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-08-30
          • 2015-10-06
          • 2017-09-28
          • 2023-03-03
          • 2011-10-17
          • 2017-02-23
          • 1970-01-01
          相关资源
          最近更新 更多