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

推荐订阅源

H
Help Net Security
腾讯CDC
爱范儿
爱范儿
Google DeepMind News
Google DeepMind News
V
V2EX
Blog — PlanetScale
Blog — PlanetScale
Engineering at Meta
Engineering at Meta
GbyAI
GbyAI
量子位
F
Fortinet All Blogs
G
Google Developers Blog
T
The Blog of Author Tim Ferriss
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Hugging Face - Blog
Hugging Face - Blog
Last Week in AI
Last Week in AI
T
Tailwind CSS Blog
J
Java Code Geeks
S
SegmentFault 最新的问题
D
Docker
博客园 - 司徒正美
The GitHub Blog
The GitHub Blog
Jina AI
Jina AI
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要么一起加,要么一起不加,不然呵呵。。。微软小样。。。。。。气死你。