【问题标题】:SQL query if not null enter field value如果不为空,则 SQL 查询输入字段值
【发布时间】:2016-12-21 03:55:55
【问题描述】:

尝试创建 SQL 查询,如果字段条目满足条件或为空,则在读取字段时输入读取的值,否则将跳过该行的整个选择。

SELECT a.name, b.age 
CASE
    WHEN a.birthday = b.birthday THEN vlaue?
    WHEN a.birthday != b.birthday THEN skip?
    ELSE is null THEN null
END AS birthday

FROM information a, tracking b

WHERE a.name = b.name

因此,如果出生日期匹配或为空,它将输入姓名和年龄,但如果出生日期不匹配,则根本不会输入姓名和年龄。

【问题讨论】:

  • 一些示例数据和预期输出将有助于阐明规范。即“跳过该行的整个选择”是什么意思?这是否意味着不应该返回满足该条件的行?该行应该从结果集中省略吗?结果集中应该有多少列?
  • a.birthdayb.birthday哪个可以为空?

标签: mysql informix


【解决方案1】:

你应该使用 where

  SELECT a.name, b.age 
    CASE
        WHEN a.birthday = b.birthday THEN 'value'
        ELSE null
    END AS birthday

  FROM information a
  INNER JOIN  tracking b ON  a.name = b.name
  WHERE a.birthday != b.birthday

(你应该使用显式连接表示法.. 更易读)

或者如果你还需要不匹配时使用左连接

 SELECT a.name, b.age 
    CASE
        WHEN a.birthday = b.birthday THEN 'value'
        ELSE null
    END AS birthday

  FROM information a
  LEFT JOIN  tracking b ON  a.name = b.name
  WHERE a.birthday != b.birthday

【讨论】:

  • 这也将跳过空的情况,因为x != y 在其中一个为空时为空。
  • 谢谢,加入正在为“跳过”部分工作。我想念标签 |在上面键入并需要 WHERE a.birthday = b.birthday THEN 在 a.birthday 中显示值。我试过 CASE WHERE a.birthday = b.birthday THEN a.birthday 没有运气
  • 我想我明白了,从 INNER 改为 LEFT。
  • @cw2 如果你也需要结果,当 on 子句不匹配时,左连接是正确的解决方案..(我不知道你的确切问题).. 答案已更新..
猜你喜欢
  • 1970-01-01
  • 2019-05-02
  • 1970-01-01
  • 1970-01-01
  • 2016-07-26
  • 1970-01-01
  • 1970-01-01
  • 2021-12-22
相关资源
最近更新 更多