A. sql 如何過濾相同數據
分類: 電腦/網路 >> 程序設計 >> 其他編程語言
問題描述:
表為: table1
裡面欄位為: id test1 test2 test3 test4
內容為: 1 網路 2006-08-01 admin
2 網易 163 2006-08-03 user
3 雅虎 .yahoo 2006-08-05 admin
4 網路 2006-08-08 user
set rs=conn.execute("select distinct test1 from table")
do while not rs.eof
response.write rs("test1")
rs.movenext
loop
這樣我就得出了過濾結果:
網路
網易
雅虎
但如果我想把 test2 test3 test4欄位也同時顯示出來的話,我該如何做呢?
set rs=conn.execute("select distinct test1,test2,test3,test4 from table1"
以上不行的.
但如果用以下方法顯示覺得也不科學.
set rs=conn.execute("select distinct test1 from table")
do while not rs.eof
set rs2=conn.execute("select*from table1 where test1 = "&rs("test1"))
response.write rs("test1")
respones.write rs2("test2")
response.write rs2("test3")
response.write rs2("test4")
rs.movenext
loop
能否有更好的方法呢?謝謝謝謝謝謝!
解析:
樓主用distinct肯定達不到所需效果。
可以用group by 分組,不過因為其他欄位有重復值,只能讓其他欄位取一個值了
sql="select test1,max(test2) as test2,max(test3) as test3,max(test4) as test4 from table1 group by test1"
B. sql語句如何查詢一個表中某一列的相同數據
select
*
from
表名
tb
where
(select
count(1)
from
#
where
id=tb.id)>=2
C. sql語句如何查詢一個表中某一列的相同數據
假設表名是num,列名是a,則查詢語句為:
SELECT * FROM num WHERE a IN(
SELECT a FROM num GROUP BY a HAVING COUNT(a)>1
)
其中:
SELECT 語句:SELECT 語句用於從表中選取數據。結果被存儲在一個結果表中(稱為結果集)。
WHERE 子句:如需有條件地從表中選取數據,可將 WHERE 子句添加到 SELECT 語句。
GROUP BY 語句:GROUP BY 語句用於結合合計函數,根據一個或多個列對結果集進行分組。
HAVING 子句:在 SQL 中增加 HAVING 子句原因是,WHERE 關鍵字無法與合計函數一起使用。
COUNT() 函數:返回匹配指定條件的行數。
(3)sql如何篩選數額相等列擴展閱讀:
sql語言特點:
1、一體化:SQL集數據定義DDL、數據操縱DML和數據控制DCL於一體,可以完成資料庫中的全部工作。
2、使用方式靈活:它具有兩種使用方式,即可以直接以命令方式交互使用;也可以嵌入使用,嵌入到C、C++、FORTRAN、COBOL、JAVA等主語言中使用。
3、非過程化:只提操作要求,不必描述操作步驟,也不需要導航。使用時只需要告訴計算機「做什麼」,而不需要告訴它「怎麼做」。
4、語言簡潔,語法簡單,好學好用:在ANSI標准中,只包含了94個英文單詞,核心功能只用6個動詞,語法接近英語口語。
D. sql server 2005查詢一個表中兩列值相等的sql語句怎麼寫
select * from 表 where 列1=列2
或者select * from A A1 INNER JOIN A A2 ON A1.列1=A2.列2
E. SQL中,如何對同個表中,兩個列的數值都相同的項進行查詢並顯示
應該是表的自連接查詢 比如 select a.* from table a,table b where a.A=b.C;
F. 如何用SQL查詢一個表中某幾個列相同的數據
刪除資料庫中重復數據的幾個方法
資料庫的使用過程中由於程序方面的問題有時候會碰到重復數據,重復數據導致了資料庫部分設置不能正確設置……
方法一
declare @max integer,@id integer
declare cur_rows cursor local for select 主欄位,count(*) from 表名 group by 主欄位 having count(*) > 1
open cur_rows
fetch cur_rows into @id,@max
while @@fetch_status=0
begin
select @max = @max -1
set rowcount @max
delete from 表名 where 主欄位 = @id
fetch cur_rows into @id,@max
end
close cur_rows
set rowcount 0
方法二
有兩個意義上的重復記錄,一是完全重復的記錄,也即所有欄位均重復的記錄,二是部分關鍵欄位重復的記錄,比如Name欄位重復,而其他欄位不一定重復或都重復可以忽略。
1、對於第一種重復,比較容易解決,使用
select distinct * from tableName
就可以得到無重復記錄的結果集。
如果該表需要刪除重復的記錄(重復記錄保留1條),可以按以下方法刪除
select distinct * into #Tmp from tableName
drop table tableName
select * into tableName from #Tmp
drop table #Tmp
發生這種重復的原因是表設計不周產生的,增加唯一索引列即可解決。
2、這類重復問題通常要求保留重復記錄中的第一條記錄,操作方法如下
假設有重復的欄位為Name,Address,要求得到這兩個欄位唯一的結果集
select identity(int,1,1) as autoID, * into #Tmp from tableName
select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID
select * from #Tmp where autoID in(select autoID from #tmp2)
G. SQL資料庫語句篩選某一段時間內某一表某一列相同數據
例如:表a中的datetime欄位乎滲都是『2013-05-11
13:10:00『這種格式的,篩選其中8:00到10:00之間的。
select
*
from
表awhere
substring(convert(varchar,欄位名,120),12,8)
between
'08:00:00'
and
'10:00:00'
怎麼利用SQL語句查詢資料庫中具體某禪歷個欄位的重復行?
可用group
by……having來實現。
可做如下測試:
1、創建表插入數據:
create
table
test
(id
int,name
varchar(10))
insert
into
test
values
(1,'張三')
insert
into
test
values
(2,'李四')
insert
into
test
values
(3,'張三'歲襲脊)
insert
into
test
values
(4,'王五')
H. 如何過濾sql表中的兩列或三列都相同的數據,顯示的是相同的數據,不相同的不顯示
可以通過group by having count(*) > 1來實現
如select col1,col2 from table1 group by col1,col2 having count(*) > 1
如果表的數據列不只是col1,col2且要顯示所有的列則可以
select a.* from table1 a join (
select col1,col2 from table1 group by col1,col2 having count(*) > 1 ) as b
on a.col1 = b.col1 and a.col2 = b.col2
I. sql語句分組查詢 其中2列值都相等的條目數
select * from 表名 where 第三個欄位名=第四個欄位名