作者f0987654 (skywalker)
看板Database
标题[SQL ] Join之後发生的怪问题
时间Wed Mar 7 12:55:15 2012
我有两张资料表
表A checkname
id name
-------------
1 John
2 April
3 Jay
4 Jason
表B namelist
*表b id为fk
*namecheck 只是代表有没有勾选(预设值0,1是有勾选)
id newid possiblename namecheck(0/1)
------------------------------------------------------
1 123 Elton John 1
1 456 Vector John 0
1 789 KK John 0
2 632 OO April 0
2 587 April ZZ 0
3 451 Jay Chou 1
3 577 Chou Jay 0
4 479 Mike Jason 0
4 985 Jason G. 1
最後我想把在checkname资料表中的名字
对应到namelist中的哪个namecheck=1项目
并且看看哪些还没有勾选(同个id下,只要有个namecheck是1就代表填过了)
下了以下query
SELECT a.ID,a.Name as fullname,b.ID,b.possibleName,namecheck
FROM checkname a JOIN namelist b
on a.ID = b.ID
GROUP BY a.id
HAVING b.namecheck='0'
结果如下,变成每个群组(id相同)只要第一笔为0就挑出来
id fullname newid possiblename namecheck(0/1)
-------------------------------------------------
2 April 587 April ZZ 0
4 Jason 451 Mike Jason 0 --->这笔记录应该是多余的!
问题到底出在哪呢?
希望大家能帮忙解答一下,谢谢..
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 175.180.185.77
1F:推 LPH66:having 改成 where 放在 group by 前面这样试试? 03/07 16:45
2F:→ LPH66:先用 where 筛过再 group by 起来应该就是你要的了... 03/07 16:46
3F:→ f0987654:感谢L大,问题有修改可以在帮忙一下嘛? thx 03/07 17:28
※ 编辑: f0987654 来自: 175.180.185.77 (03/07 23:21)