猿问

求一条sql语句

表A   有字段   ID       username     pric
                      1        xiaoli             5                         
                      2        xiaozhang      2                         
                      3       xiaowang       5
表B    有字段     ID     username     userni
                          1       xiaoli            xiaozhang
                          2       xiaoli            xiaoli
                          3       xiaoli            xiaozhang
                          4      xiaozhang     xiaowang
                          5      xiaozhang     xiaowang
表A 与表B之间的对应关系 表A 的username 字段 同时对应表B的username    和 userni 两个字段
首先 例如我根据条件 username等于"xiaozhang"或着userni 等于"xiaozhang"的时候
 我取表B的 count值  根据上面列举条件 表B的count值为4
现在我要查询出表A中 pric 的值减去表B中count值为1的值
但是现在表B中的结果可能不只一条 可能 count值等于4的结果有N条,
表A中每条记录的pric的值是不一样的
表B中count的值每个用户也是不一样的  
我要查询出的结果是 表A中每条记录的pric 减去 表B 中count值等于1的结果集合
我要查询出表A中满足条件的全部数据 
该怎么查呢我这个查询该怎么写呢
牛魔王的故事
浏览 308回答 1
1回答

Qyouu

DECLARE @a TABLE(id INT ,aname VARCHAR(1),pric INT )DECLARE @b TABLE(id INT ,aname VARCHAR(1),bname VARCHAR(1))INSERT INTO @a VALUES(1,'a',5)INSERT INTO @a VALUES(2,'b',2)INSERT INTO @a VALUES(3,'c',5)INSERT INTO @b VALUES(1,'a','b')INSERT INTO @b VALUES(2,'a','a')INSERT INTO @b VALUES(3,'a','b')INSERT INTO @b VALUES(4,'b','c')INSERT INTO @b VALUES(5,'b','c')SELECT * FROM @aSELECT * FROM @b--以上是初始化数据 --下面是答案SELECT [@a].* FROM @a INNER JOIN (SELECT [@a].aname,COUNT([@a].id) AS countName FROM @aINNER JOIN @b ON [@a].aname = [@b].aname OR [@a].aname = [@b].bnameGROUP BY [@a].aname)t ON t.aname=[@a].anameWHERE [@a].pric - t.countName=1 不知道是不是你想要的答案
随时随地看视频慕课网APP
我要回答