【问题标题】:SQL table where clause errorSQL表where子句错误
【发布时间】:2013-11-16 12:02:44
【问题描述】:

我需要来自表工作人员的 LAST_NAME、JOB_ID、SALARY 列,并且作业 ID 需要是 SH_CLERK 或 SA_REP,并且 SALARY 列不能等于 1000,2600,3000,7000,8000 或 9000

SELECT `LAST_NAME`, `JOB_ID`, `SALARY` FROM `workers`
WHERE `JOB_ID` = SH_CLERK OR SA_REP AND `SALARY` != 1000 and 2600 and 3000 and 7000 and 8000 and 9000;

我不知道怎么了,我得到了 #1054 - Unknown column 'SH_CLERK' in 'where Clause' 错误。

谢谢!

【问题讨论】:

  • JOB_ID的数据类型是什么?它是另一张桌子的钥匙吗?

标签: mysql sql


【解决方案1】:

在字符串周围加上引号。

将多个OR 切换为使用IN

SELECT LAST_NAME, JOB_ID, SALARY
  FROM workers
 WHERE JOB_ID IN ('SH_CLERK', 'SA_REP')
   AND SALARY NOT IN (1000, 2600, 3000, 7000, 8000, 9000);

【讨论】:

  • SELECT LAST_NAME, JOB_ID, SALARY FROM inimesed WHERE JOB_ID = SH_CLERK or SA_REP AND SALARY != @9876543332 3000700080009000;
【解决方案2】:
SELECT LAST_NAME, JOB_ID, SALARY
FROM workers
WHERE  JOB_ID IN ('SH_CLERK', 'SA_REP') AND
   SALARY NOT IN (1000, 2600, 3000, 7000,8000, 9000)

【讨论】:

    【解决方案3】:

    假设我正确理解了问题, 如果job_id是数字数据,SH_CLERK或SA_REP取自其他表。

    `Select last_name, job_id, salary 
     from workers 
     where job_id = (select id from <user table> 
                     where <sh_clerk/sa_rep column name field> like 'SH_CLERK' or 
                           <sh_clerk/sa_rep column name field> like 'SA_REP')
     and SALARY not in(1000, 2600, 3000, 7000, 8000, 9000);`
    

    &lt;user table&gt; 是 SH_CLERK 或 SA_REP 取自的表

    &lt;sh_clerk/sa_rep column name field&gt;&lt;user table&gt;中的列名

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-08
      • 1970-01-01
      • 1970-01-01
      • 2016-01-09
      • 2017-12-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多