SQL 从表中选择条目,其中属性等于参数,否则选择 * 条目

Posted

技术标签:

【中文标题】SQL 从表中选择条目,其中属性等于参数,否则选择 * 条目【英文标题】:SQL select entries from table where atribute equals parameter else select * entries 【发布时间】: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 的东西?

【问题讨论】:

请显示您尝试的查询、根据您的示例数据返回的结果以及预期结果。 查询的预期输出是什么? 我写了预期的输出,培根得到了它并解决了 【参考方案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 相当肯定这是在我阅读问题后添加的。但有效的观点。

以上是关于SQL 从表中选择条目,其中属性等于参数,否则选择 * 条目的主要内容,如果未能解决你的问题,请参考以下文章

SQL查询从键表中选择多个条目到同一行的不同列中

从表中随机选择一定百分比的条目

如果存在则从表中选择,否则从oracle中的另一个表中选择

如何从表中的每个不同类别中选择三行?

从表中选择字段,其中 id 不在 mysql 的另一个表中 [不工作]

从表中选择一个标量值