web-dev-qa-db-ja.com

他の列にNULLなしで特定の列にデータを挿入する方法は?

以下に示すように、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や新しい行なしでそれらを使用できる可能性だけです。

9
Arsenii

私は解決策(一連の論理演算)を見つけました:

1)CHECKセルがある場合(ターゲット列に)値が""またはNULL

2)IFこれらのいずれかがあり、この行の他のセルの値をその場所に保持して最初のセルを書き換えます(おそらく、UPDATE)))を使用します))。

3)ELSE行のもう一方のセルにすべてのNULLsを含む新しい行を追加するだけです。

いくつかの値をさまざまな列に同時に追加したい場合は、それらすべてのクエリを準備し、それらを同時に実行することができます(トートロジーのため申し訳ありません)。

1つのクエリ内の同じ列にいくつかの値を追加する必要がある場合は、ループを使用して準備できます(段落1と2(またはオプションで3)を繰り返します)。

1
Arsenii
UPDATE table1
SET col2 = dataB2, col3 = dataC2
WHERE col1 = dataA2;

これはあなたの目的に役立つかもしれません:)

1
Parth Bahuguna

既存の行にデータを追加する場合は、UPDATEステートメントを使用する必要があります。たとえばこのように:

UPDATE table1 SET
col2 = 'data5'
col3 = 'data6'
FROM table1
WHERE col1 = 'data4'

また、問題の根本的な原因はデータベースの設計に問題があるように見えますが、このクエリは、既存の行にデータを追加する方法を示すためのものです。

0
John Odom

テーブルがあるとしましょう
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

0
Kushagra

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')
0
paul