Jag ger ett förslag trots att du inte angett vilken dbms du använder...
INSERT INTO tabell b (b_text, b_bool)
SELECT a_text, 0 FROM tabell a
WHERE NOT a_text IN (SELECT b_text FROM tabell b WHERE b_bool = 1)
5 svar · 278 visningar · startad av Travoni
Hur gör jag detta?
Tabell a
a_text
----------------------
a
b
c
d
Tabell b
b_text | b_bool
-----------------------
a | 0
b | 1
c | 0
Efteråt så skulle jag vilja att tabell b skall se ut:
a | 0
b | 1
c | 0
d | 0
Alltså har motsvarande post i tabell b 1 i kolumnen b_bool så skall den inte "röras".
Jag ger ett förslag trots att du inte angett vilken dbms du använder...
INSERT INTO tabell b (b_text, b_bool)
SELECT a_text, 0 FROM tabell a
WHERE NOT a_text IN (SELECT b_text FROM tabell b WHERE b_bool = 1)
Varför
WHERE b_bool = 1
?
Det finns vissa DBMS som hanterar nedanstående fel. (Sorgligt men sant.)
NOT a_text IN
a_text NOT IN
är säkrare.
LarsG skrev:
Varför
WHERE b_bool = 1?
Om du frågar mig så skrev jag mest så för att Travoni skrev att det var det som gällde. Jag förstår dock inte din fråga riktigt...
Kanske är frågan felställd / otydlig?
Kanske är tabellstrukturen skum?
Om man har med villkoret b = 1 i subselecten så kommer man att göra insert på posterna a, c, d vilket inte stämmer med önskemålet.
Jag förstod nog inte önskemålet då.