① sql 查詢語句 資料庫 過濾重復記錄
使用分析函數抄row_number(大部分襲資料庫的新頒布都支持),對數據按你需要的重復欄位進行編號,然後只取編號值為1的記錄。
類似於:
select d.*
from (
-- 按mobile, area, address, post_code對記錄進行分組排序,並且按accept_name升序排
select row_number() over (group by mobile, area, address, post_code order by accept_name) as row_idx, s.*
from dt_orders s
) d
where d.row_idx = 1
② sql語句查詢過濾重復數據
1、查找表中多餘的重復記錄,重復記錄是根據單個欄位(peopleId)來判斷
復制代碼代碼如下:
select * from people
where peopleId in (select peopleId from people group by peopleId having count
(peopleId) > 1)
2、刪除表中多餘的重復記錄,重復記錄是根據單個欄位(peopleId)來判斷,只留有rowid最小的記錄
復制代碼代碼如下:
delete from people
where peopleId in (select peopleId from people group by peopleId having count
(peopleId) > 1)
and rowid not in (select min(rowid) from people group by peopleId having count(peopleId
)>1)
③ 如何查詢資料庫中的特定值
select * from Table1 where ID=s 當然不行咯~ 因為 s 沒有值啊
select * from Table1 where ID=2 這樣就行了~~~
或者非要用s的話,就應該在前面給s賦值~~
declare @s int
set @s = 2
select * from Table1 where ID= @s --T-SQL語句表示局部變數,使用@做前綴~~~
④ 怎麼利用sql資料庫篩選出來的數據再次進行查詢
您說的這個意思我的理解是使用臨時表。
例如
1.插入臨時表
SELECT A,B,C INTO #TMP
FROM TABLE1
2.使用臨時表
SELECT * FROM #TMP
這時候臨時表內的數據就是您篩選出來的數據,可視為正常數據表來使用。
⑤ Oracl 資料庫查詢過濾數據
select *
from table1 t,
table2 t1
where t.關聯欄位 = t1.關聯欄位
and not exists (select 1 from table2 t2 where t2.時間 > t1.時間 and t2.關聯欄位 = t.關聯欄位)
如果不看最後一個and條件,是查詢出所有的關聯數據,是一對多的關系,然後使用not exists,不存在比本條時間更大的數據,那麼表示本行就是最大的數據了,這樣會把多條關聯中,不是最大時間的都過濾掉。
⑥ sql 查詢語句中如何過濾指定的字元
1、語句:SELECT * FROM dbo.Procts WHERE prod_name='king doll' AND prod_price>8。
--檢索dbo.Procts表中所有列,過濾條件為由供應商king doll製造價格大於8的所有商品。
注意:--後面的字元是這條語句的注釋,這條語句有兩個條件,分別用AND關鍵字聯接在一起,並且過濾結果必須滿足這兩個條件,如果只滿足其中一個該數據不會被檢索出來。
2、OR操作符(或)
語句:SELECT * FROM dbo.Procts WHERE prod_name='king doll' OR prod_price>8。
--檢索dbo.Procts表中所有列,過濾條件為由供應商king doll製造價格大於8的所有商品值。
注意:--這里要說明的是OR操作符與AND操作符的不同之處是只要滿足其中一個條件,數值就會被檢索出來,例如:由供應商king doll製造價格小於8商品或者由供應商king add製造價格大於8的商品只要其中一個條件符合,數據就被檢索出來。
3、IN操作符(指定條件范圍)
語句:SELECT * FROM dbo.Procts WHERE prod_name IN ('king doll' ,'Queen dool')。
--檢索dbo.Procts表中所有列,過濾條件為由供應商king doll和Queen dool製造的商品。
注意:它的功能其實和OR一樣,但是它的執行速度會更快並且簡潔,最大的優點是可以包含其他SELECT語句,能夠更動態地建立WHERE字句。
⑦ 資料庫查詢後的結果可以對欄位進行過濾嗎
可以啊
select*from(
selecta,bfromtableName
)astwheret.b=***
試一試上面的語句,如有疑問,及時溝通!
⑧ 我要把一個資料庫中的數據經過查詢過濾出一部分我需要的數據放到另一個資料庫的同名表中這個SQL語句該如何
假設a庫中的a表,b庫中的b表
欄位一致:
INSERT INTO a.a(a, b, c, d, e, f, g, h) SELECT a, b, c, d, e, f, g, h FROM b.b WHERE 條件
欄位不一致:
INSERT INTO a.a(a, b, c, d, e, f, g, h) SELECT id as a, title as b, c, d,e, f, g, h FROM b.b WHERE 條件
⑨ 資料庫語句中篩選出來多個結果後,如何只篩選出一個想要的結果
首先來說一下sql的大概的執行順序,主流的資料庫一般都是這樣的,from表(找到數據集)—where(對數據進行刪選)—group by(對數據進行分組,合並處理)—select(選出數據項)—order by(對結果數據集進行排序),這是大致粗糙的順序,還有排重啊、刪選組啊等等,不細說了,最重要的是看執行計劃,你會清晰的看到語句執行的順序和成本消耗(cost)。
我猜到lz在糾結什麼問題。
where a.Change_Time=(select MIN(c.Change_Time) from Change c where c.Change_Time>b.Change_Time) 是這句的結果集吧
換個角度來想,其實這就話的意思就是在a表中大於b表的時間集中選最小的,很顯然當b表時間為
2011-12-5時a表中大於此值的最小值為2011-12-6;當b表時間為2011-6-7時a表中大於此值的最小值為2011-12-5,因此會有兩條記錄產生。執行下面語句看一下,將非常清晰。
⑩ 請問如何在資料庫中提取數據時過濾數據內容
寫個函數吧靈活點。
v_str1 是實際記錄
v_str2 是現實的記錄,如果v_str1中沒有要顯示的記錄(如南京路)回返回空答
create or replace function f_test(v_str1 in varchar2, v_str2 in varchar2)
return varchar2 as
n_instr int;
begin
n_instr := instr(v_str1, v_str2);
if n_instr > 0 then
return v_str2;
else
return '';
end if;
end;
--測試
select f_test('南京路,淮海路,天津路,古美路','南京路') col
from al;
--結果
南京路
select f_test('淮海路,天津路,古美路','南京路') col
from al;
結果
空