自己常用sql整理バックアップ
14601 ワード
日付別グループ化
select trunc(CREATEDON ) ,count(1)
from td_buyer
where CREATEDON < to_date('2020-06-01','YYYY-MM-DD') and CREATEDON>= to_date('2020-06-11','YYYY-MM-DD')
group by trunc(CREATEDON );
テーブルを削除
DROP TABLE `FBADS_FACEBOOK_PAGE`;
クエリに含まれる文字列
SELECT * FROM fbads_keyword_filter WHERE 'ssssdhgates255' LIKE CONCAT('%',keyword,'%')
条件の変更
UPDATE TD_FEEDBACK_SCORE_WEEK_S ss set BUYERLEVEL='1' where ss.FEEDBACKSCOREWEEKSID in
(select s.FEEDBACKSCOREWEEKSID from TD_FEEDBACK_SCORE_WEEK_S s , TD_USER_DIM d where s.buyerid=d.buyerid
AND d.EXP_LEVEL_ID in('d1','d2','d3','d4') and s.BUYERLEVEL='3')
計算#ケイサン#
select CAST(col_1_0_ /(case when col_0_0_ = 0 then 1 else col_0_0_ end) AS decimal(9,1)) from(
select count(*) as col_0_0_, nvl(sum(tdperforms0_.RESPONSE), 0) as col_1_0_
from HGGJV2.TD_PERFORM_SERVISE_WEEK_S tdperforms0_
where tdperforms0_.SUPPLIERID = :1
and tdperforms0_.RESPONSE <> '0.0'
and (tdperforms0_.SYSWEEKINFOID in
(select tcweekinfo1_.SYSWEEKINFOID
from HGGJV2.TC_WEEK_INFO tcweekinfo1_
where tcweekinfo1_.STARTDATE > add_months(sysdate, -12)
and tcweekinfo1_.STARTDATE <= sysdate)));
大量データページングデータ最適化整理
ソースsql
select * from account where age >= 18;
最適化後のsql
select * from (select * from account where age >= 18)where limit 100,10;
サブクエリページング
SELECT * FROM account WHERE id >=
(SELECT id FROM account WHERE age = 18 ORDER BY id LIMIT 10000, 1) LIMIT 10
joinページング
SELECT * FROM account a JOIN (select id from account limit 10000, 10) b ON a.ID = b.id
ページングcount最適化
mybatis
手書きcountクエリーを追加すると、PageInterceptor構成のためのcountSuffix countクエリー接尾辞構成パラメータを追加できます.デフォルトは_です.COUNT. ページング・プラグインは、現在のクエリーのmsId+countSuffixによって手書きのページング・クエリーを優先的に検索します.存在する場合は手書きのcountクエリーを使用し、存在しない場合は、以前の方法でcountクエリーを自動的に作成します.たとえば、次の2つのクエリが存在する場合:
<select id="selectLeftjoin" resultType="com.github.pagehelper.model.User">
select a.id,b.name,a.py from user a
left join user b on a.id = b.id
order by a.id
</select>
<select id="selectLeftjoin_COUNT" resultType="Long">
select count(distinct a.id) from user a
left join user b on a.id = b.id
</select>
上のcountSuffixで使用されるデフォルト値_COUNT、ページングプラグインは自動的にselectLeftjoinを取得します.COUNTクエリー、このクエリーは自分で結果数が正しいことを保証する必要があります.
戻り値のタイプはresultType="Long"でなければなりません.入力パラメータはselectLeftjoinクエリと同じパラメータを使用するので、SQLではselectLeftjoinの入力パラメータに従って使用します.
selectLeftjoin_COUNTメソッドは自動的に呼び出されるので、インタフェースに対応するメソッドを提供する必要はありません.個別に呼び出す必要がある場合は、提供することもできます.
参考資料:
pagehelper/Mybatis-PageHelper
mybatisクエリはプライマリ・キーを返します
<selectKey keyProperty="id" resultType="long" order="AFTER">
SELECT LAST_INSERT_ID()
</selectKey>
データベース・ロック・テーブルのクエリー
1.テーブルをロックするかどうかを問い合わせる
show OPEN TABLES where In_use > 0;
2.クエリー・プロセス(SUPER権限がある場合は、すべてのスレッドが表示されます.それ以外の場合は、独自のスレッドのみが表示されます)
show processlist
3.プロセスid(上のコマンドのid列)を殺す
kill id
2つ目:1.ロックされたトランザクションの表示
SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;
2.プロセスid(上記コマンドのtrx_mysql_thread_id列)を殺す
kill ID
例:デッドロックプロセスの検出:SHOW PROSCESSLIST殺しプロセスKILL 420821;デッドロックの表示に関するその他のコマンド:1:現在のトランザクションの表示
SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;
2:現在ロックされているトランザクションの表示
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
3:現在ロックされているトランザクションの表示
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;