去评论
推扬网

武安福:SQL语句“SELECT TOP 10”的问题

admin
2020/08/10 20:20:23

寿兰的回答:

把top 10去掉 IF IsInteger(cate_ID) = False Then SQL="SELECT L.log_ID,L.log_Title,l.log_Author,L.log_PostTime,L.log_Content,L.log_edittype,C.cate_Name FROM blog_Content AS L,blog_Category AS C WHERE C.cate_ID=L.log_cateID AND L.log_IsShow=true AND L.log_IsDraft=false and C.cate_Secret=false ORDER BY log_PostTime DESC" Else SQL="SELECT L.log_ID,L.log_Title,l.log_Author,L.log_PostTime,L.log_Content,L.log_edittype,C.cate_Name FROM blog_Content AS L,blog_Category AS C WHERE log_cateID="&cate_ID&" AND C.cate_ID=L.log_cateID AND L.log_IsShow=true AND L.log_IsDraft=false and C.cate_Secret=false ORDER BY log_PostTime DESC" FeedCate=True

顾铭的回答:

把top 10去掉 IF IsInteger(cate_ID) = False Then SQL="SELECT L.log_ID,L.log_Title,l.log_Author,L.log_PostTime,L.log_Content,L.log_edittype,C.cate_Name FROM blog_Content AS L,blog_Category AS C WHERE C.cate_ID=L.log_cateID AND L.log_IsShow=true AND L.log_IsDraft=false and C.cate_Secret=false ORDER BY log_PostTime DESC" Else SQL="SELECT L.log_ID,L.log_Title,l.log_Author,L.log_PostTime,L.log_Content,L.log_edittype,C.cate_Name FROM blog_Content AS L,blog_Category AS C WHERE log_cateID="&cate_ID&" AND C.cate_ID=L.log_cateID AND L.log_IsShow=true AND L.log_IsDraft=false and C.cate_Secret=false ORDER BY log_PostTime DESC" FeedCate=True

来碗孟婆汤的回答:

为何会出来 -->因为你写成笛卡尔积了,就是from后面只有表名没有关联字段。比如有: a表 (用户id,用户名) (1001,张三) (1002,李四) b表 (用户id,职称) (1001,学生) 如果 select a.用户id,a.用户名,b.用户id,b.职称 from a,b; 你会发现出现以下结果: 1001,张三,1001,学生 1002,李四,1001,学生 这就出现和你遇到的问题一样的问题了,就是检索出了【a表记录条数*b表记录条数】条的数据了,也就是笛卡尔积。 ******************** 解释完了:把你的sql修改如下【加上表的关联关系】 select spj.sno,spj.qty from spj,p,s where spj.sno = s.sno and spj.pno = p.pno and spj.sno like 's1' ************************ 补充:刚刚看到你的sql种检索的只是一个表的信息,那么这么写就好。 select sno,qty from spj where spj.sno like 's1'; 或者 select sno,qty from spj where spj.sno ='s1'; ************************ --- 以上,希望对你有所帮助。