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 从表中选择条目,其中属性等于参数,否则选择 * 条目的主要内容,如果未能解决你的问题,请参考以下文章