当前位置: 代码迷 >> Sql Server >> 初学者继续请问SQL语句
  详细解决方案

初学者继续请问SQL语句

热度:35   发布时间:2016-04-24 08:59:15.0
菜鸟继续请教SQL语句
在数据库中有表A和表B。
表A中有name, type, content, img 四列。
表B中有img, imgUrl两列。

如:
表A
name      type    content     img
李可         2         abcd         
付军         2         cdef   
李好         1         ghijk         356.jpg
李好         2         lmno

表B中为
img                         imgUrl
356.jpg                  www.xxx.com/img/26/356.jpg
789.jpg                  www.xxx.com/img/38/789.jpg

在表A中,type为1时,后面的img列是有值的,为2的话,img中是没有值的。

现在我想把姓名为李好的 name  type  content img imgUrl找出来,找出来的结果应该是
name      type    content     img                 imgUrl
李好         1         ghijk         356.jpg           www.xxx.com/img/26/356.jpg
李好         2         lmno

前面我开了一个帖子,知道了应该写为:
SELECT A.name, A.type, A.content, A.img, B.imgUrl FROM A LEFT JOIN B ON A.img=B.img Where name='李好' order by A.name asc;
我现在还想要获取到返回的行数。请问要在上面语句的基础上怎么改呢?
------解决思路----------------------
SELECT A.name, A.type, A.content, A.img, B.imgUrl,(select count(1) from A LEFT JOIN B ON A.img=B.img Where name='李好' ) as c FROM A LEFT JOIN B ON A.img=B.img Where name='李好' order by A.name asc;

------解决思路----------------------
1、你的B表img、imgUrl应该是联合主键吧?
2、A表的imge和B表应该是一对一的吧?
3、你要求的返回行数,是A表某个name的图片数,还是什么?
如果是图片数,1#的语句就是

------解决思路----------------------
SELECT A.name, A.type, A.content, A.img, B.imgUrl FROM A LEFT JOIN B ON A.img=B.img Where name='李好' order by A.name asc;

这个查询的总行数?

SELECT A.name, A.type, A.content, A.img, B.imgUrl 
,COUNT(1)OVER()[总行数]
FROM A LEFT JOIN B ON A.img=B.img Where name='李好' order by A.name asc;
  相关解决方案