複雜sql語句查詢,sql語句查詢

2022-05-17 03:09:45 字數 5863 閱讀 6829

1樓:

select id,name,isnull((select sum(金額) from b表 where id=a表.id and bno=20),0) 正常消費,isnull((select sum(金額) from b表 where id=a表.id and bno=30),0) 充值,(select top 1 餘額 from b表 where id=a表.

id order by 時間 desc) 餘額,(select max(時間) from b表 where id=a表.id) 時間

from a表

這樣看一下行不行

2樓:丸子爸爸的日常

可以對連表查詢

select * from `a表名` a join `表名b` b join `表名c` c where a.id= b.id=c.id

希望你的問題能解決,望採納

3樓:咖啡嚶

select a.id,d.name,isnull(b.

zcxf,0) [正常消費],isnull(c.czxf,0) [充值],a.ye [餘額],a.

dt [時間]

from

(select id,餘額 ye,時間 dt

from b表 a

where exists(select id from (select id,max(時間) maxdt from b表) b where a.id = b.id and a.

時間 = b.maxdt)

) ainner join

a表 d

on a.id = d.id

left outer join

(select id,bno,sum(金額) zcxf

from b表

where bno = 20

group by id,bno

) bon a.id = b.id

left outer join

(select id,bno,sum(金額) czxf

from b表

where bno = 30

group by id,bno

) con a.id = c.id

-----------------------------------

select a.id,a.name

,case when b.bno = 20 then b.金額 else 0 end [正常消費]

,case when b.bno = 30 then b.金額 else 0 end [充值]

,b.餘額,b.時間

from a表 a,b表 b

where a.id = b.id

and b.時間 between '2015-01-01' and '2015-01-06'

sql語句查詢 5

sql多條件查詢語句

4樓:任好慕

select * from tab_name where 組號='001組' and to_char(日期,'yyyy-mm-dd')='2013-04-15' and 姓名1='小王'

union all

select * from tab_name where 組號='001組' and to_char(日期,'yyyy-mm-dd')='2013-04-15' and 姓名2='小王'

union all

select * from tab_name where 組號='001組' and to_char(日期,'yyyy-mm-dd')='2013-04-15' and 姓名3='小王'

union all

select * from tab_name where 組號='001組' and to_char(日期,'yyyy-mm-dd')='2013-04-15' and 姓名4='小王'

或者是:

select * from tab_name where 組號='001組' and to_char(日期,'yyyy-mm-dd')='2013-04-15' and 姓名1='小王' or 姓名2='小王' or 姓名3='小王' or 姓名4='小王'

寫複雜sql語句能力(電信行業報表sql)

5樓:匿名使用者

本人也是做這行的,有11年了,就你的問題只想跟你說:

1、sql語句其它沒什麼難度,首先了解左連線,右連線,全連線這三個方面的內容。

2、複雜sql也是基於簡單sql的基礎上,是一種簡單sql的靈活應用已。

3、有前輩帶領的環境下,最好向前輩門多多提問,不用看書,看一天書,不如前輩一分鐘的指導

4、業務部門有報表需求時,你要求接個簡單的,或從前輩那接過來,親自完成,但**一定要親自寫,不懂問前輩,這比什麼進步都快。

5、我帶過很多的徒弟,一般這麼要求他們,進步也很快,保證3次之後可獨立完成。

6樓:匿名使用者

首先,我想說的是千萬不要太著急,複雜的東西都是從簡單開始的,你現在基本的東西都已經掌握了,現在主要是把基本的東西怎麼組合起來。我也是在移動做運維的。剛開始情況跟你是一樣的。

然後在看複雜sql時,最好是能知道這個sql是要完成什麼目標的。(以下是我個人的方法)先看from,再看select的內容,再看where條件,對於group by ,join 可以更具select的內容一個一個的去看關聯,如果太多可以用筆記一下。(不要想著能把所有指令碼內容都能熟悉,我猜你們那的指令碼也是經過很多人完成的,一個人一個思想,自己去琢磨別人的思想,確實比較難)。

查詢sql問題要多看日誌,從日誌去定位出問題的指令碼位置,慢慢的看的遍數多了,你也就熟悉了。(還是要說一下,千萬不要急,每個人都是從不會到會,再到精通的)。

對於各種處理欄位的函式,一定要多在網上搜一下,多理解一下這個函式的作用,這樣才能靈活運用。

shell指令碼的編寫,可以先看一下基礎教程,網上很多的,然後編寫一下練習題,多看一下你們公司現有的資源,然後對照著你不懂的指令碼,再去網上或書上去找答案,這樣會加深你的理解。

先說到這吧,希望能對你有點幫助,有問題可以再互相溝通。(千萬不要急奧,向著自己的目標前進吧。)

7樓:匿名使用者

做大量的練習吧,然後,讓你們經理給你安排從簡單到難的查詢報表的任務,這樣你慢慢會提高,你說看書吧,不練也沒有用,資料庫只要知道基本語法,基本結構還是靠練,靠理解;

如何統計sql語句查詢出來的條數?

8樓:匿名使用者

可以通過count函式來實現。

sqlone:select * from tablename1 where id>5;此語句查詢出來多條記錄,之後看做一個新的表。

sqltwo:select conut(*) from (select * from tablename1 where id>5) as tablename2;此語句即可查詢出來統計的記錄條數。

備註:以上方法通用於所有的資料統計,如果是單表查詢,可以直接通過:「select count( *) from tablename1 where id>5"的形式查詢出結果。

9樓:千鳥

i=select  count(1)   from table

語句返回值即為查詢出來的條數.

示例如圖所示:

擴充套件:count() 函式返回匹配指定條件的行數。

語法(1). sql count(column_name) 語法

count(column_name) 函式返回指定列的值的數目(null 不計入):

select count(column_name) from table_namesql

(2). count(*) 語法

count(*) 函式返回表中的記錄數:

select count(*) from table_namesql

(3). count(distinct column_name) 語法

count(distinct column_name) 函式返回指定列的不同值的數目:

select count(distinct column_name) from table_name

10樓:匿名使用者

select conut(*) from tablename

11樓:匿名使用者

*改為count(*)就返回記錄條數了,當然也可以用recordset的count屬性

寫一條高效的sql查詢,該怎麼處理

12樓:司馬刀劍

優化sql查詢:如何寫出高效能sql語句

1、首先要搞明白什麼叫執行計劃?

執行計劃是資料庫根據sql語句和相關表的統計資訊作出的一個查詢方案,這個方案是由查詢優化器自動分析產生欀如一條sql語句如果用來從一個10萬條記錄的表中查1條記錄,那查詢優化器會選擇「索引查詢」方式,如果該表進行了歸檔,當前只剩下5000條記錄了,那查詢優化器就會改變方案,採用 「全表掃描」方式。

可見,執行計劃並不是固定的,它是「個性化的」。產生一個正確的「執行計劃」有兩點很重要:

(1) sql語句是否清晰地告訴查詢優化器它想幹什麼?

(2) 查詢優化器得到的資料庫統計資訊是否是最新的、正確的?

2、統一sql語句的寫法

對於以下兩句sql語句,程式設計師認為是相同的,資料庫查詢優化器認為是不同的。

select * from dual

select * from dual

其實就是大小寫不同,查詢分析器就認為是兩句不同的sql語句,必須進行兩次解析。生成2個執行計劃。

所以作為程式設計師,應該保證相同的查詢語句在任何地方都一致,多一個空格都不行!

3、不要把sql語句寫得太複雜

我經常看到,從資料庫中捕捉到的一條sql語句列印出來有2張a4紙這麼長。一般來說這麼複雜的語句通常都是有問題的。我拿著這2頁長的sql語句去請教原作者,結果他說時間太長,他一時也看不懂了。

可想而知,連原作者都有可能看糊塗的sql語句,資料庫也一樣會看糊塗。

一般,將一個select語句的結果作為子集,然後從該子集中再進行查詢,這種一層巢狀語句還是比較常見的,但是根據經驗,超過3層巢狀,查詢優化器就很容易給出錯誤的執行計劃。因為它被繞暈了。像這種類似人工智慧的東西,終究比人的分辨力要差些,如果人都看暈了,我可以保證資料庫也會暈的。

另外,執行計劃是可以被重用的,越簡單的sql語句被重用的可能性越高。而複雜的sql語句只要有一個字元發生變化就必須重新解析,然後再把這一大堆垃圾塞在記憶體裡。可想而知,資料庫的效率會何等低下。

4、使用「臨時表」暫存中間結果

簡化sql語句的重要方法就是採用臨時表暫存中間結果,但是,臨時表的好處遠遠不止這些,將臨時結果暫存在臨時表,後面的查詢就在tempdb中了,這可以避免程式中多次掃描主表,也大大減少了程式執行中「共享鎖」阻塞「更新鎖」,減少了阻塞,提高了併發效能。

5、 oltp系統sql語句必須採用繫結變數

select * from orderheader where changetime > 』2010-10-20 00:00:01′

select * from orderheader where changetime > 』2010-09-22 00:00:01′

以上兩句語句,查詢優化器認為是不同的sql語句,需要解析兩次。

如果採用繫結變數

select * from orderheader where changetime > @chgtime

@chgtime變數可以傳入任何值,這樣大量的類似查詢可以重用該執行計劃了,這可以大大降低資料庫解析sql語句的負擔。一次解析,多次重用,是提高資料庫效率的原則。

6、繫結變數窺測

C解析sql語句,C 中 SQL 查詢語句

語法錯誤 bai你在from後面的是一串dusql語句,所以語zhi句後是要加別名的。試試 daoselect sum 總額 回 from select distinct 合同,總額 from table where 專案 aa and型別答 a as tab select sum 總額 from ...

sql查詢top關鍵字,sql查詢語句 top n的用法

操作步驟如下 1 首先假設在sql server中有一個基本的資料庫,有6條資料。2 然後我們利用top關鍵字,就能利用top後面跟著數字就能篩選條數。3 此時執行測試,因為top後面的關鍵字為2,所以有2條資料。這樣就完成了操作。結構化查詢語言 structured query language ...

SQL語句,怎麼樣查成這個樣子,SQL語句請教 如何將查詢出的多個結果作為條件進行查詢?

create table t 單號 varchar 10 碼數 varchar 10 數量 int insert into t values sd 34 5 insert into t values sd 35 4 insert into t values sd 36 2 insert into t...