日期:2014-05-16  浏览次数:20776 次

又来求助sql了。
id address contentid status 
5 0 14 0
6 22 15 1
7 22 14 1
8 0 16 0

求一条sql 查询出如果有contentid 相等的 就只查出address不等于0的
如 contentid 有2条等于14就不查出id等于5的那条。像id等于8的那条address等于0 没有与它相等的就查出等于0的。


------解决方案--------------------
鄙人mysql新手,不知道对LZ有帮助没
1、select contentid,count(contentid) from tablename group by contentid


2、select * from tablename where address!=0 and contentid = 第一条查询出来的contentid
------解决方案--------------------
(不要高估你的汉语表达能力或者我的汉语理解能力)
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
 
1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
 
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。


------解决方案--------------------
用14楼数据测试,假设ID唯一

SELECT * FROM tty a WHERE
NOT EXISTS(SELECT 1 FROM tty WHERE a.contentid=a.contentid AND a.address=0)
or

not EXISTS(SELECT 1 FROM tty WHERE a.contentid=a.contentid AND a.address=0 and a.id<id)