【问题标题】:SQL select entries from table where atribute equals parameter else select * entriesSQL 从表中选择条目,其中属性等于参数,否则选择 * 条目
【发布时间】:2016-05-20 17:32:55
【问题描述】:

在 SQL (ORACLE) 中是否可以从属性等于参数的表中选择所有条目,如果不选择所有其他条目?

就像这个例子:

货到付款 |名称
1 |星期一
2 |星期四
3 |周六

参数=3

当cod等于参数(cod=3)时返回cod参数的入口(cod=3)(包括cod和name)
其他
返回与参数(cod=3)不同的所有其他条目(包括 cod 和名称)(如 ​​1 星期一和 2 星期四)

是否可以使用 SQL (oracle),或者我需要类似 PLSQL 的东西?

【问题讨论】:

  • 请显示您尝试的查询、根据您的示例数据返回的结果以及预期结果。
  • 查询的预期输出是什么?
  • 我写了预期的输出,培根得到了它并解决了

标签: sql oracle if-statement plsql


【解决方案1】:

我会使用相关查询和非相关查询:

SELECT COD, NAME 
FROM TABLE a
WHERE EXISTS (SELECT 1 FROM TABLE b WHERE b.COD = a.COD AND b.COD = 3)
    OR NOT EXISTS (SELECT 1 FROM TABLE c WHERE c.COD = 3)

不过,我不确定我是否完全按照你的逻辑。

实际上,如果所有内容都来自一张表,则可以简化为:

SELECT COD, NAME 
FROM TABLE a
WHERE a.COD = 3
    OR NOT EXISTS (SELECT 1 FROM TABLE c WHERE c.COD = 3)

【讨论】:

  • 谢谢培根先生,这就是我想要的:)
  • 在我看来一切都已解决,所以我关闭了问题,再次感谢:)
【解决方案2】:
IF EXISTS(SELECT 1 FROM TABLE WHERE COD=3)
THEN
  SELECT COD, NAME FROM TABLE WHERE COD=3
ELSE 
  SELECT COD, NAME FROM TABLE
END IF

【讨论】:

  • ??问题是“这可能用 SQL 吗” - 你看到了吗?
  • @mathguy 相当肯定这是在我阅读问题后添加的。但有效的观点。
猜你喜欢
  • 1970-01-01
  • 2019-12-04
  • 1970-01-01
  • 2020-10-21
  • 1970-01-01
  • 1970-01-01
  • 2021-07-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多