web-dev-qa-db-fra.com

Comment INSÉRER des données dans une colonne spécifique sans NULL dans les autres colonnes?

J'ai une table ("table1") avec 3 colonnes appelées col1, col2 et col3 (chacune est VARCHAR) avec 4 valeurs comme indiqué ci-dessous:

col1   col2   col3
datA1  datB1  datC1
datA2  

J'ai besoin de pouvoir ajouter des données à tout moment dans n'importe quelle colonne qui n'affecte pas les autres. Le code très populaire sur Internet est le suivant (par exemple, nous devons ajouter des données uniquement aux colonnes col2 et col3):

INSERT INTO table1 (col2, col3)
VALUES ('datB2', 'datC2');

Mais il ajoute de nouvelles lignes, comme ci-dessous:

col1   col2   col3
datA1  datB1  datC1
datA2
NULL   datB2  datC2

Ce dont j'ai vraiment besoin, c'est de remplir la ligne commençant par la valeur "datA2" dans la colonne "col1" avec de nouvelles valeurs et d'obtenir le tableau comme ci-dessous:

col1   col2   col3
datA1  datB1  datC1
datA2  datB2  datC2

Si quelqu'un pouvait m'aider, je serais très apprécié !!! Merci .. Arsenii.


Mise à jour: Le tableau comporte 3 colonnes et chaque réponse de colonne pour un type particulier de valeurs (par exemple: nom, couleur, taille). Ce dont j'ai besoin, c'est simplement la possibilité d'ajouter de nouvelles valeurs à tout moment dans une colonne particulière et de les avoir sans Null et de nouvelles lignes si elle a une cellule libre auparavant.

6
Arsenii

J'ai trouvé la solution (une chaîne d'opérations logiques):

1) CHECK s'il existe une cellule (dans la colonne cible) avec les valeurs "" ou NULL.

2) IF il en a une puis réécrit le PREMIER en gardant les valeurs des autres cellules de cette rangée à leur place (supposons que nous utilisons UPDATE)))).

3) ELSE ajoute simplement une nouvelle ligne avec tous les NULLs dans l’autre cellule de la ligne.

Si nous voulons ajouter quelques valeurs simultanément dans différentes colonnes, nous pouvons préparer nos requêtes pour toutes celles-ci et les exécuter simultanément (désolé pour la tautologie).

Si nous devons ajouter quelques valeurs dans la même colonne dans une même requête, nous pouvons la préparer en utilisant des boucles (en répétant les paragraphes 1 et 2 (ou, éventuellement, 3).

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

Cela peut servir votre but :)

1
Parth Bahuguna

Vous devrez utiliser l'instruction UPDATE si vous souhaitez ajouter des données à une ligne existante. Comme ceci par exemple:

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

En outre, il semble que la base de votre problème réside dans une conception de base de données médiocre, mais cette requête a pour seul but de vous montrer comment ajouter des données à une ligne existante.

0
John Odom

Supposons que vous ayez la table
CLIENT_MASTER

ClientNo Nom
C00001 Ivan
C00002 Himanshu

Maintenant, vous ajoutez une nouvelle colonne Ville 

ALTER table CLIENT_MASTER  
ADD( City varchar(10));

Maintenant, si vous voulez ajouter des valeurs dans des lignes déjà existantes, vous pouvez utiliser la commande UPDATE.
Par exemple 

UPDATE CLIENT_MASTER  
SET City='Delhi'  
WHERE ClientNo='C00001';

Le tableau mis à jour est
ClientNo Nom Ville
C00001 Ivan Delhi
C00002 Himanshu NULL

0
Kushagra

Étant donné une structure de table, avec deux lignes de données:

key         value
--------------------
team        accounts
manager     jeff

Chaque fois que vous souhaitez modifier une valeur, vous devez vérifier si elle est déjà présente (pour la mise à jour) ou non (pour l'insertion). Donc, pour changer la valeur de la propriété 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