#mysql #sql #insert
Вопрос:
Использование MySQL
Со следующей таблицей:
Idempotent
id VARCHAR(256) PRIMARY KEY
createdAt DATETIME NOT NULL
Как сделать INSERT
или SELECT
с 1 утверждением?
INSERT INTO Idempotent
(id, createdAt)
VALUES
('hello world', '2021-09-23 12:34:56')
ON DUPLICATE KEY **SELECT * FROM Idempotent WHERE (id = 'hello world') **
SELECT
не допускается ON DUPLICATE KEY
, так как же сделать вставку или выбор с помощью 1 оператора? Это вообще возможно?
Комментарии:
1.
UPDATE
нужно следоватьON DUPLICATE KEY
, а неSELECT
.2. Да, в этом-то и проблема. Есть ли способ попытаться
INSERT
и когда это не удастся,SELECT
используя одно утверждение?3. Ни за что. Запрос либо возвращает набор строк, либо нет, в то время как вы хотите, чтобы запрос возвращал набор строк только иногда. Пожалуйста, опишите саму задачу, а не (неправильный) способ, которым вы решили воспользоваться для решения этой задачи.
4. @theAnonymous . . .
INSERT
иSELECT
это разные утверждения. Вы можетеINSERT
, а затемSELECT
вставить строку, которая была вставлена.
Ответ №1:
Вам нужно использовать INSERT INTO .. SELECT FROM
INSERT INTO Idempotent
(id, createdAt)
SELECT 'hello world', '2021-09-23 12:34:56'
FROM DUAL;
Комментарии:
1. Будет возвращено несколько запусков одного и того же оператора
Duplicate entry 'hello world' for key 'idempotent.PRIMARY'
.