Условно вставить строку - PullRequest
0 голосов
/ 22 июля 2010

Я бы хотел вставить строку в таблицу A, но только если существует другая строка в таблице B.Например, что-то вроде этого ...

IF EXISTS (SELECT * FROM B WHERE id=1)
    INSERT INTO A
        (id, value1, value2)
        VALUES (1, 'foo', 'bar')

Однако это не работает.Что будет?

Ответы [ 2 ]

3 голосов
/ 22 июля 2010
INSERT INTO A (value1, value2, value3)
    SELECT 'foo', 'bar', 'foo' FROM B WHERE ID = 1

Одна потенциальная проблема здесь заключается в том, что если ваше условие будет выполнено более одного раза, оно вставит столько строк, что приспособит ваш запрос к этому, но выполнит то, что вы хотите, вставлять только в том случае, если выполнены условия выбора.

0 голосов
/ 22 июля 2010

Взгляните на это руководство по MySQL, в нем приведен пример с SELECT, но, возможно, INSERT также будет работать аналогичным образом?

...