表的结构如下:
ID ColumnID Title
1 2 新闻1
2 2 新闻2
3 4 新闻3
4 1 新闻4
5 1 新闻5怎么列出这个表的ID、ColumnID、Title三个字段的数据,并且ColumnID中没有重复的数据?
ID ColumnID Title
1 2 新闻1
2 2 新闻2
3 4 新闻3
4 1 新闻4
5 1 新闻5怎么列出这个表的ID、ColumnID、Title三个字段的数据,并且ColumnID中没有重复的数据?
解决方案 »
- 解密sqlserver 2005的存储过程.....
- 使用OleDbDataAdapter需要用OleDbConnection.Close()关闭数据库链接吗?
- VS2005,发布网站后,SQL2000数据库就访问不了了??
- 撒个分,顺便问个atlas的问题,用过的兄弟帮看看
- asp.net网页链接access数据库的问题
- 急!在线等!点击分页页码后,分页无法正常工作。解决马上给分。
- datalist的ItemCreated事件执行问题
- 简单问题,我设计了一个表,如何加入一个已知表的字段
- 请教关于checkboxlist查询
- 请问这大代码是否线程安全
- 为什么会出现这样的错误???“在不带括号的情况下引用了方法”。。
- TreeView 的使用
语法可能有点错误,但大致就是这个意思了,另外,其实应该使用exits语句的,因为exits语句据说效率比较高
---------------------------------------------------------
这段中where id=max(id)会有错误提示:聚合不应出现在 WHERE 子句中,除非该聚合位于 HAVING 子句或选择列表所包含的子查询中,并且要对其进行聚合的列是外部引用。还可以用什么方法?
SELECT a.NewsID, a.ColumnID, a.indexTitle,b.columnid
FROM News_News as a
INNER JOIN (select distinct columnid from News_News)as b
on b.columnid=a.columnid还是出现和 SELECT a.NewsID, a.ColumnID, a.indexTitle,b.columnid FROM News_News 一样的结果。
where id in
(
select max(id) from table where ColumnID in
(
select ColumnID from table group by ColumnID having count(*) >1
)
group by ColumnID,id
)
union
select id,ColumnID,title from table
where id in
(
select id from table where ColumnID
(
select ColumnID from table group by ColumnID having count(*) =1
)
)
------------有点啰嗦,估计没问题
呵呵,猛男啊~~~我怎么想不到这么分哈~~简简单单一条语句搞定~
一楼、二楼语句肯定是不起作用;
swordragon(古道热肠)兄的在where子句里使用聚合函数,不用测试就知道肯定有语法错误
只有cen123(创造者)兄的能正常工作,但结果只是硬性删除了ID为1和4的值(因为ID为1、4时ColunmID都与2、5的重复);
happyfamily(FreeHorse)兄的只少了一个关键字in就可以工作了,可是结果实际上等价于Select * from table;
我想搂主的本意不应该是想丢掉表中的信息吧,这个问题通过一张数据表从逻辑上讲就是不可实现的,否则一定会丢失记录。因为从本质讲,ColumnID虽然不同,但他们依旧代表着不同的记录!比如ColunmID为2对应着两条不同的新闻,我们怎么做到在一张数据表中只选出一个ColunmID为2的值呢?如果强行那样,就象cen123兄的办法,那就一定会丢掉新闻1和新闻4,或者新闻2和新闻5!