以下に示すように、col1、col2、col3(それぞれVARCHAR)と呼ばれる3つの列を持つ4つの値を持つテーブル( "table1")があります。
col1 col2 col3
datA1 datB1 datC1
datA2
他の列に影響を与えずに、任意の列にいつでもデータを追加する機能が必要です。インターネットで非常に人気のあるコードは次のとおりです(たとえば、列col2とcol3にのみデータを追加する必要があります)。
INSERT INTO table1 (col2, col3)
VALUES ('datB2', 'datC2');
ただし、次のように新しい行が追加されます。
col1 col2 col3
datA1 datB1 datC1
datA2
NULL datB2 datC2
私が本当に必要なのは、列「col1」の値「datA2」で始まる行に新しい値を入力し、次のようなテーブルを取得することです。
col1 col2 col3
datA1 datB1 datC1
datA2 datB2 datC2
誰かが私を助けることができれば私は非常に高く評価されます!!!ありがとう。アルセニー。
更新:テーブルには3つの列があり、各列は特定のタイプの値(たとえば、名前、色、サイズ)に対して応答します。私が必要とするのは、特定の列にいつでも新しい値を追加し、以前に空きセルがある場合にNullや新しい行なしでそれらを使用できる可能性だけです。
私は解決策(一連の論理演算)を見つけました:
1)CHECK
セルがある場合(ターゲット列に)値が""
またはNULL
。
2)IF
これらのいずれかがあり、この行の他のセルの値をその場所に保持して最初のセルを書き換えます(おそらく、UPDATE
)))を使用します))。
3)ELSE
行のもう一方のセルにすべてのNULL
sを含む新しい行を追加するだけです。
いくつかの値をさまざまな列に同時に追加したい場合は、それらすべてのクエリを準備し、それらを同時に実行することができます(トートロジーのため申し訳ありません)。
1つのクエリ内の同じ列にいくつかの値を追加する必要がある場合は、ループを使用して準備できます(段落1と2(またはオプションで3)を繰り返します)。
UPDATE table1
SET col2 = dataB2, col3 = dataC2
WHERE col1 = dataA2;
これはあなたの目的に役立つかもしれません:)
既存の行にデータを追加する場合は、UPDATE
ステートメントを使用する必要があります。たとえばこのように:
UPDATE table1 SET
col2 = 'data5'
col3 = 'data6'
FROM table1
WHERE col1 = 'data4'
また、問題の根本的な原因はデータベースの設計に問題があるように見えますが、このクエリは、既存の行にデータを追加する方法を示すためのものです。
テーブルがあるとしましょう
CLIENT_MASTER
ClientNo Name
C00001イワン
C00002ヒマンシュ
次に、新しい列Cityを追加します
ALTER table CLIENT_MASTER
ADD( City varchar(10));
既存の行に値を追加する場合は、UPDATEコマンドを使用できます。
例えば
UPDATE CLIENT_MASTER
SET City='Delhi'
WHERE ClientNo='C00001';
更新されたテーブルは
ClientNo Name City
C00001イヴァンデリー
C00002 Himanshu NULL
2つのデータ行を持つテーブル構造があるとします。
key value
--------------------
team accounts
manager jeff
値を変更するたびに、値がすでに存在する(更新の場合)か、存在しない(挿入の場合)かを確認する必要があります。したがって、manager
プロパティの値を変更するには:
if exists(select * from keyValues where key = 'manager')
update keyValues set value = 'mike' where key = 'manager'
else
insert into keyValues ('manager', 'mike')