当前位置: 首页 > 面试题库 >

在where子句中的COALESCE?

姜德容
2023-03-14
问题内容

如果列匹配,是否有很好的方法在SQL中表示选择特定的行,否则选择更通用的行?就像是:

SELECT name FROM names 
            WHERE (colA = @colA OR colA = 'ALL')

我只希望它返回一个特定的记录(如果存在),否则,如果找不到特定的列匹配项,则返回通用的“
ALL”记录。看起来COALESCE与我正在寻找的相似,但我不知道在语法上如何工作。


问题答案:

@Blorgbeard答案(使用前1个和排序依据)可能是最好的方法,但只是有所不同,您还可以使用子查询,但不存在:

SELECT name FROM names 
WHERE (colA = @colA) OR (colA = 'ALL' AND NOT EXISTS(
                                                SELECT name FROM names 
                                                WHERE colA = @colA))

我猜这的“优势”是它使用了更多标准的sql。



 类似资料:
  • 问题内容: 谁能给我一些关于如何将这种子查询放入提示?(我正在使用 JPA 2.0 - Hibernate 4.x ) -第二个选择将始终获得单个结果或null。 问题答案: 尝试类似以下示例的操作来创建子查询: 请注意,由于附近缺少IDE,因此该代码尚未经过测试。

  • 本章提供了有关如何使用JDBC应用程序从表中选择记录的示例。 这将在从表中选择记录时使用WHERE子句添加其他条件。 在执行以下示例之前,请确保您具备以下示例 - 要执行以下示例,您可以使用实际用户名和密码替换用户名和密码。 您的MySQL或您正在使用的任何数据库已启动并正在运行。 所需的步骤 (Required Steps) 使用JDBC应用程序创建新数据库需要以下步骤 - Import the

  • 问题内容: 我有一个这样的表“ bla”: 如果我做SQL查询 我只得到ID为2的记录。我没有ID为3的记录,其中fk为空。我以为NULL!=4。看来这是错误的。 为什么会这样呢? 问题答案: 不等于任何东西。您需要明确接受null: 有关处理的更多信息,请参见使用NULL。

  • 问题内容: 我的网页上有一个绑定到gridview的entitydatasource。 在后面的代码中,我可以使用entitydatasource的WHERE语句过滤并向网格视图显示所需的内容。我的where语句之一使用大的OR语句进行过滤,但是逻辑上比较多的IN语句不起作用。 例如,我有雇员1-9,并且我想选择雇员1、4和7。在SQL中,我可以通过以下两种方式: 1。 2。 这两个语句在SQL中

  • 我是JPA的新手。使用where子句构建select查询。我需要从表Contacts中选择所有等于字符串名称值的ContactName。 以下是执行我的项目时出现的错误:java.lang.IllegalArgumentException:无法根据在org.hibernate.jpa.criteria.path.abstractPathimpl.unknownatAttribute(abstrac

  • 问题内容: 在WHERE子句中有使用SELECT语句描述的名称吗?这是好/不好的做法吗? 这会是更好的选择吗? 它远没有那么优雅,但是运行起来比以前的版本要快。我不喜欢它,因为它在GUI中没有非常清晰地显示(并且SQL初学者需要理解它)。我可以将其分为两个独立的查询,但是随后事情变得混乱了…… 注意:我不仅需要日期和分数(例如姓名) 问题答案: 称为相关子查询。它有它的用途。