Как устранить Дублирующую ошибку имени столбца в MariaDb - PullRequest
0 голосов
/ 16 октября 2019

Я пытаюсь выполнить приведенный ниже запрос в HeidiSQL-

INSERT INTO entities (id, name, description, port) SELECT * FROM 
(SELECT 1, 'customer', 'Customer', 'xyz') AS tmp 
WHERE NOT EXISTS 
( SELECT name FROM entities WHERE name = 'customer' AND port = 'xyz' ) LIMIT 1

Я хочу вставить указанные выше значения в таблицу entities, если она не существует. Но я получаю эту ошибку - Duplicate column name 'Customer'

Есть идеи, как решить эту проблему? Цени любую помощь.

Ответы [ 2 ]

1 голос
/ 16 октября 2019

Добавьте псевдонимы к выбранной статье запроса:

INSERT INTO entities (id, name, description, port) SELECT * FROM 
(SELECT 1, 'customer' as name, 'Customer' as description, 'xyz') AS tmp 
WHERE NOT EXISTS 
( SELECT name FROM entities WHERE name = 'customer' AND port = 'xyz' ) LIMIT 1

Однако я бы предпочел создать уникальный индекс для полей name - port, что предотвратит создание дублирующихся записей.

0 голосов
/ 16 октября 2019

Попробуйте это (обратите внимание, что столбец 'id' является первичным ключом):

INSERT INTO entities (name, description, port) 
SELECT 'customer', 'Customer', 'xyz' FROM entities 
WHERE name NOT IN ( SELECT name FROM entities WHERE name = 'customer' AND port = 'xyz' ) LIMIT 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...