【发布时间】:2011-08-31 02:00:02
【问题描述】:
我在 WHERE 子句中有一个包含多个条件的 SQL 语句,但是一旦满足一个条件,查询就会停止。我需要的是查询返回与条件之一有关的所有行。
例如:
select * from EMPLOYEE_LEAVE
where
ENUMBER = :num
or
EFNAME = 'Sebastien'
or
ESNAME = :sname
在这种情况下,查询必须搜索 EFNAME 为 Sebastien 的所有记录。我的数据库中有两条符合此条件的记录,但是查询只返回第一个结果。我将如何显示所有符合此条件的记录?
【问题讨论】:
-
您使用的是什么关系型数据库?搜索是否区分大小写?
-
Sql 将返回包含所有匹配行的集合,因此肯定有其他问题。您使用的是哪个 dbms/服务器,您如何评估结果?
-
如果该行匹配多个条件,您是否期望多次返回同一行?如果是这样,
UNION ALL可能就是您所需要的(尽管我不明白为什么这是可取的) -
@Oded 和@faester - 我正在使用 Firebird 2.1 和 Database Workbench 4 Lite for Firebird。问题可能出在 Database Workbench 上,因为我所做的只是编写语句并执行它吗? @John-Pickup 不,两个不同的行。我的数据库中有 Sebastien Smith 和 Sebastien Russell,当使用上述查询搜索 Sebastien 时,我希望返回两行,但只返回 Sebastien Russell。
-
SELECT * FROM EMPLOYEE_LEAVE where EFNAME='Sebastien' 是否返回两行?
标签: sql firebird where-clause firebird2.1