【发布时间】:2013-03-17 14:21:52
【问题描述】:
我正在尝试匹配来自不同表的列,使用SYSDATE 将它们与今天的日期匹配。输出实际上是在所有行上使用今天的日期填充日期列,而不是仅在其中实际包含今天日期的一行。
SELECT building.building_code,
building.building_name,
room_booking.booking_date
FROM building,
room_booking,
dual
WHERE to_date(booking_date) = trunc(sysdate)
输出是:
BUILDING_CODE BUILDING_NAME BOOKING_DATE
------------- --------------- ------------
A ARCADIA <17-mar-13>
B BELIZE <17-mar-13>
C CAMDEN <17-mar-13>
D DENVER <17-mar-13>
E EXETER <17-mar-13>
F FORT PORTAL <17-mar-13>
G GRAMPIAN <17-mar-13>
H HELVITICA <17-mar-13>
I INVICTA <17-mar-13>
J JULIET <17-mar-13>
10 rows selected
结果中应该只有一行,因为只有 1 行包含今天的日期。我哪里出错了?
【问题讨论】:
-
你的两个表需要一个连接条件(你不需要
dual)。 -
感谢垫子 - 现已删除双重功能
-
为什么
TO_DATE周围有booking_date?是字符串吗?