![SQL serverに繋がりません](https://cdn-ak-scissors.b.st-hatena.com/image/square/d61d99447f3434c475f38686e3fcb4f6ab93528f/height=288;version=1;width=512/https%3A%2F%2Fteratail.com%2Fimg%2FogpImages%2FimgFacebookShare.png)
あるテーブルやビューに既に対象のレコードが存在している場合はUPDATE(更新)し、存在していない場合はINSERT(挿入)する。 データベースを使ったアプリケーションを開発していると、よく遭遇するケースの処理です。 こんな場合はどのように処理を行えばよいでしょう。 一旦SELECTを実行して対象のレコードを取得して、データの取得有無の判断をIF文で分岐し、レコードが取得できればUPDATEを実行、レコードが取得できなければINSERTを実行する。 単純に考えれば上記のような処理になります。しかし、上記の処理はSELECTという処理と、UPDATEまたはINSERTという処理の2つの処理に分かれており、1回のSQLで実行することはできません。 SQLServerにはある条件を満たすデータが存在している場合はUPDATEやDELETEの処理、データが存在していない場合はINSERTの処理を行
昨日、メモリ最適化テーブル (Hekaton) の利用方法について数名の方からご質問いただきました。 Hekaton の利用方法について個人的な所感を。 私はまだ、案件での適用は経験していないため、経験則ではなくこんな感じかなという雑然とした内容になってしまってまいますが。 テーブルやクエリの制限などの仕様については前提として満たす必要がありますので、その辺は触れていません。 ■データサイズについて メモリ最適化テーブル のチェックポイントファイルの最大数は 128MB ×4,096 = 512GB となります。 Hardware Considerations for In-Memory OLTP in SQL Server 2014 によるとメモリ最適化テーブルの現状のサポートは 256GB となるようですので、テーブルのデータがこの範囲に収まるかどうかを検討する必要があります。 In
結合を含んだ更新(Update)のOracleでの書き方。 SQL-Serverと違ってUpdate句の中でJoinが使えないのでサブクエリ内で結合する。 また、更新する列をサブクエリ内で取得しておく必要がある。 ※テーブル1とテーブル2で結合し、テーブル2の項目でテーブル1を更新する例 ・SQL-Serverの場合 UPDATE table1 SET COL1 = B.COL1 FROM table1 A INNER JOIN table2 B ON A.CD1 = B.CD1 ・Oracleの場合 UPDATE ( SELECT A.COL1 A_COL, B.COL2 B_COL FROM table1 A INNER JOIN table2 B ON A.CD1 = B.CD1 ) SET A_COL = B_COL
SQL Server 2008 からは、MERGE ステートメントがサポートされました。MERGE ステートメントは、データが存在する場合には UPDATE を、存在しない場合には INSERT 処理が行えるステートメントなので、UPSERT とも呼ばれています(UPDATE と INSERT を組み合わせた造語)。 MERGE は、次のように試せます(t1 と t2 テーブルを作成して、これをマージ)。 CREATE TABLE t1 ( a int, b varchar(100) ) INSERT INTO t1 VALUES ( 1, 'AAA' ) ,( 2, 'BBB' ) ,( 3, 'CCC' ) ,( 4, 'DDD' ) CREATE TABLE t2 ( a int, b varchar(100) ) INSERT INTO t2 VALUES ( 3, 'XXX' )
MERGE ステートメントの USING には、テーブル名だけでなく、任意のクエリを記述することができます。したがって、複数のテーブル同士の MERGE だけでなく、任意の変数の値をもとにして、MERGE ステートメントを実行することもできます。 次のように t1 テーブルと、変数 @a と @b があった場合に、MERGE するには、次のように記述します。 DECLARE @a int = 4 ,@b varchar(100) = 'EEE' MERGE INTO t1 USING ( SELECT @a AS a, @b AS b ) var ON t1.a = var.a WHEN MATCHED THEN UPDATE SET t1.b = var.b WHEN NOT MATCHED THEN INSERT VALUES (var.a, var.b ); そのほかの SQL Se
This took me a while to figure out, especially since I’m not so great with either windows or SQL server, but in the end the process isn’t so difficult. Rails 3, Ruby 1.9.2, Windows 2008, and SQL Server 2008 Screencast The steps covered in this screencast are: Create user Create database Give user permissions Create DSN Install ruby Install devkit (Needed to complie native extensions for ODBC) Crea
なんか昔エントリ書いた気がするんだけど、軽く検索したら見つからなかったので備忘録に残しておきます。 元ネタは こちらです↓ 解説もこちらです↓ CONVERTを使いこなそう!! ~数値編~|ソフトウエア開発部(システム開発・システム設計 株式会社アイロベックス|東京都新宿区) ソースを晒しておく CREATE FUNCTION [dbo].[FORMAT_COMMA](@value int) RETURNS varchar(20) AS BEGIN RETURN REPLACE(CONVERT(varchar(20), CAST(@value AS money), 1), '.00', '') END
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く