表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中满足条件的全部数据
该怎么查呢我这个查询该怎么写呢
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
不知道是不是你想要的答案