或者在SQL中给出问题

axkjgtzd  于 2022-09-18  发布在  Java
关注(0)|答案(2)|浏览(186)
  1. SELECT *
  2. FROM FEEDER A
  3. WHERE A.CF = 'X'
  4. OR A.SF = 'X'
  5. AND A.YEAR = 2021;

当我运行上面的查询时,它返回了所有年份!我只想要2021年,其中CF或SF是X。

46scxncf

46scxncf1#

你只需要两个括号-

  1. SELECT *
  2. FROM FEEDER A
  3. WHERE (A.CF = 'X'
  4. OR A.SF = 'X')
  5. AND A.YEAR = 2021;

或者可以将您的查询缩短为-

  1. SELECT *
  2. FROM FEEDER A
  3. WHERE 'X' IN (A.CF, A.SF)
  4. AND A.YEAR = 2021;
g52tjvyc

g52tjvyc2#

AND运算符的优先级高于OR运算符,因此您的查询与:

  1. SELECT *
  2. FROM FEEDER A
  3. WHERE (A.CF = 'X')
  4. OR (A.SF = 'X' AND A.YEAR = 2021);

并且将返回:CF = 'X'的任何年份;或者仅当SF = 'X'的2021年。

如果要修复您的查询,则需要执行以下任一操作:

  1. SELECT *
  2. FROM FEEDER A
  3. WHERE A.CF = 'X'
  4. AND A.YEAR = 2021
  5. OR A.SF = 'X'
  6. AND A.YEAR = 2021;

或者,稍微更容易阅读,使用方括号:

  1. SELECT *
  2. FROM FEEDER A
  3. WHERE ( A.CF = 'X'
  4. OR A.SF = 'X')
  5. AND A.YEAR = 2021;

或者,使用IN运算符:

  1. SELECT *
  2. FROM FEEDER A
  3. WHERE 'X' IN (A.CF, A.SF)
  4. AND A.YEAR = 2021;
展开查看全部

相关问题