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

求一条sql语句

求一条sql语句

牛魔王的故事 2018-12-07 05:46:33
表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 回答

?
Qyouu

TA贡献1786条经验 获得超11个赞

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

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

查看完整回答
反对 回复 2019-01-21
  • 1 回答
  • 0 关注
  • 307 浏览

添加回答

举报

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