为了账号安全,请及时绑定邮箱和手机立即绑定

求一条sql语句

求一条sql语句

不负相思意 2018-08-20 15:06:02
表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中满足条件的全部数据该怎么查呢我这个查询该怎么写呢
查看完整描述

1 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

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 @a
SELECT * FROM @b
--以上是初始化数据

--下面是答案
SELECT [@a].* FROM @a 
INNER JOIN (
SELECT [@a].aname,COUNT([@a].id) AS countName FROM @a
INNER JOIN @b ON [@a].aname = [@b].aname OR [@a].aname = [@b].bname
GROUP BY [@a].aname
)t ON t.aname=[@a].aname
WHERE [@a].pric - t.countName=1

不知道是不是你想要的答案


查看完整回答
反对 回复 2018-08-22
  • 1 回答
  • 0 关注
  • 474 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信