【发布时间】:2014-12-05 04:11:30
【问题描述】:
我正在使用 Select 1 from dual 语句来查看进入我系统的新数据是否真的是新的,如果是新的,那么它将被插入,如果不是,那么它将在数据库。
sql.CommandText = "select 1 from dual where exists (select * from my table where hour = " + hour + " and zone = '" + zone+ "' and date = TO_DATE('" + mydate + "','DD-MM-YY'))"
但问题是,在运行语句后,即使不满足条件,即使表完全为空,它也会返回 1 值。这怎么可能发生? 我正在使用 VB、.NET 框架 3.5 和 Oracle 10g。
【问题讨论】:
-
为我工作:sqlfiddle.com/#!4/6eb12/7 有没有什么你没有提到的?如果你想做更新/插入,为什么不简单地使用
MERGE语句? -
我决定不使用 MERGE 语句,因为我看到的示例更多是关于实际将 2 个表合并为 1 个表,我正在更新/插入的数据来自 XML 文件,而不是来自实际数据库.
-
您可以轻松地使用具有“常量”值的 MERGE 语句:sqlfiddle.com/#!4/ed4de/6
-
您确定它返回的结果只有一行,值为
1,而不是列名为1和0 行的结果吗?