Предположим, у меня есть две таблицы в моей базе данных: table1 и table2. В таблице 1 есть столбец, в котором хранится идентификатор, на который ссылается запись в таблице 2 с этим идентификатором.
Теперь я собираюсь выбрать некоторые записи и сохранить их во временной таблице для дальнейшего использования:
CREATE TEMPORARY TABLE IF NOT EXISTS temp_table AS (
SELECT table1.table2_id, SUM(table1.quantity) AS qty
FROM table1
WHERE table1.table2_id IN (SELECT table2.id FROM table2)
GROUP BY table1.table2_id
);
То, что делает этот запрос, не так важно для того, что я собираюсь спросить позже. Так что не тратьте слишком много времени, пытаясь понять это. Я включил его сюда только для полноты.
Очевидно, что этот запрос либо не вернет вообще никаких записей, либо вернет некоторые записи.
Если он не вернул записей, я хочу запустить свой второй запрос, который выглядит следующим образом
SELECT table1.*, 0
FROM table2 INNER JOIN temp_table
ON table2.id = temp_table.table2_id;
В противном случае, если мой запрос возвратил несколько записей, я хочу выполнить этот запрос, который использует столбец «qty» из моей временной таблицы:
SELECT table1.*, qty
FROM table2 INNER JOIN temp_table
ON table2.id = temp_table.table2_id;
Итак, вот мой вопрос: я ищу решение MySQL, которое сначала запускает первый запрос, а затем в зависимости от того, возвратил ли он что-то или нет, запускает второй или третий запрос.
Я пытался использовать оператор IF ELSE, следуя документам MySQL, но он сказал Unrecognized statement type. (near "IF" at position 0)
. Я новичок в SQL программировании. Любая помощь приветствуется. Заранее спасибо.