呵呵,幾乎成標題黨了,今天要寫個指令碼查詢7天內所有有登入玩家的資料,要求按註冊日期統計,雖然是個簡單的問題,但是關鍵是使用者表有30個,分別是user0, user1......到user29 ,光是把它們union all起來,我都夠鬱悶了,你想象下指令碼有多長吧,一大堆堆在那兒,光是複製都讓你難以忍受。
select
id,convert
(varchar(10
),create_time,
120), last_login_time
from
user0
union
allselect
id,convert
(varchar(10
),create_time,
120), last_login_time
from
user1
union
allselect
id,convert
(varchar(10
),create_time,
120), last_login_time
from
user2
.........
呵呵,下面是我用動態sql 改寫的,呵呵,簡潔多了
declare
@cmdtext
varchar
(8000
);declare
@userindex
int;
set@cmdtext=''
;set
@userindex=0
;while
@userindex
<
30beginif(
@userindex
!=29
)select
@cmdtext
=@cmdtext+'
select id,create_time, last_login_time from '+
'dbo.user'+
convert
(varchar
,@userindex) +
'union all'+
char(10
); --
換行else
select
@cmdtext
=@cmdtext+'
select id,create_time, last_login_time from '+
'dbo.user'+
convert
(varchar
,@userindex
) ;set
@userindex
=@userindex+1
;end
;select
@cmdtext='
select convert(varchar(10),t.create_time, 120) as create_time ,count(0) as recordnum from ('+
@cmdtext+'
) t where datediff(d,last_login_time,getdate()) < 7 group by convert(varchar(10),create_time, 120) ';
--print @cmdtext
exec
(@cmdtext);
char(10
動態SQL應用小列子
呵呵,幾乎成標題黨了,今天要寫個指令碼查詢7天內所有有登入玩家的資料,要求按註冊日期統計,雖然是個簡單的問題,但是關鍵是使用者表有30個,分別是 user0,user1.到user29 光是把它們union all起來,我都夠鬱悶了,你想象下指令碼有多長吧,一大堆堆在那兒,光是複製都讓你難以忍受。c...
七 SQL 子查詢 列子查詢
與標量子查詢不同,列值子查詢可以返回乙個多行多列的結果集。這樣的子查詢又被稱為錶子查詢,錶子查詢可以看作乙個臨時的表,錶子查詢可以用在select 語句的from子句中 insert語句 連線 in 子句等很多場合。首先來看乙個在from子句中使用的最簡單的錶子查詢。sql語句如下 select t...
mybatis 動態sql 應用舉例
基本應用 select from blog where state active and title like 使用if select from blog where state active and title like and author name like 使用choose select f...