惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
Recent Announcements
Recent Announcements
D
Docker
V
V2EX
阮一峰的网络日志
阮一峰的网络日志
Vercel News
Vercel News
Microsoft Security Blog
Microsoft Security Blog
The GitHub Blog
The GitHub Blog
U
Unit 42
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
月光博客
月光博客
腾讯CDC
B
Blog
博客园_首页
罗磊的独立博客
D
DataBreaches.Net
IT之家
IT之家
酷 壳 – CoolShell
酷 壳 – CoolShell
L
LangChain Blog
aimingoo的专栏
aimingoo的专栏
MongoDB | Blog
MongoDB | Blog
GbyAI
GbyAI
Stack Overflow Blog
Stack Overflow Blog
M
MIT News - Artificial intelligence

博客园 - 毛小华

如果数据库的处理(逗号) 今天碰到了http/1.1 403 Forbidden错误,处理如下 防止多次提交的几个比较 - 毛小华 - 博客园 SQL server 产生按日期排序的编号 sql数据库的连接的一句话(今天花了一个小时想明白的就记下来了) 一个很简单的操作excel的例子 - 毛小华 - 博客园 一棵树 Bom树 一个自己测试通过的操作EXCEL 一个自己测试通过的发邮件操作 - 毛小华 - 博客园 控制界面是否可输入的一个例子 - 毛小华 - 博客园 今天电脑中毒了 WebPanelBar的使用 AlertButton 一个经验 一些感觉。 sql 语句中where条件和jion on条件的区别 asp.net 的经验 erp的设计经验 如果输入的dll名字被改后应该手工删除dll
出现怪事啦,大家看啦
毛小华 · 2005-04-04 · via 博客园 - 毛小华

一个SQL 语句
首先声明一个 TBL_Order表总共记录15644条。
一个查询条数的语句
SELECT Count(TBL_Order.PKId)
         FROM VIEW1 INNER JOIN
               dbo.TBL_Order ON VIEW1.BillNo = TBL_Order.BillNo AND DATEDIFF(second,
               TBL_Order.OperateDate, VIEW1.MaxDate) > 30 AND TBL_Order.IsOrder = 0)
显示是39条记录。

然后把它放入子语句中
SELECT *
FROM TBL_Order
WHERE (PKId IN
          (SELECT TBL_Order.PKId
         FROM VIEW1 INNER JOIN
               dbo.TBL_Order ON VIEW1.BillNo = TBL_Order.BillNo AND DATEDIFF(second,
               TBL_Order.OperateDate, VIEW1.MaxDate) > 30 AND TBL_Order.IsOrder = 0))
发觉居然会显示15644条记录。

其中VIEW1是TBL_order表的一个视图。
CREATE VIEW dbo.VIEW1
AS
SELECT BillNo, MAX(OperateDate) AS MaxDate
FROM dbo.TBL_Order
WHERE (IsOrder = 0) AND (IsDelete = 0)
GROUP BY BillNo

出现怪事啦。问题我已经解决了,浪费了不少时间。
下面白字可以显示答案。先看看问题出在那里,再看答案吧。

SELECT *
FROM TBL_Order
WHERE (PKId IN
          (SELECT TBL_Order.PKId
         FROM VIEW1 INNER JOIN
               TBL_Order ON VIEW1.BillNo = TBL_Order.BillNo AND DATEDIFF(second,
               TBL_Order.OperateDate, VIEW1.MaxDate) > 30 AND TBL_Order.IsOrder = 0))

居然是因为我多写了个dbo.,画蛇添足啊,发现如果有子查询有与主查询有相同的表,并且存在连接,dbo要么一起加,要么一起不加,不然呵呵。。。微软小样。。。。。。气死你。