Вставить в таблицу uid из другой таблицы, если его нет в исходной таблице - PullRequest
1 голос
/ 12 марта 2019

Извините, если это может быть дубликат, но я некоторое время искал в StackOverflow и не вижу ничего, что точно соответствует запросу, который я ищу.

По сути, у меня есть пользовательБаза данных, в которой я недавно создал параметры для пользователей, но только для пользователей уровня 1.

Теперь я хочу изменить это и дать опции всем, независимо от их уровня.

Я просматриваю всех пользователей, которые в данный момент находятся в базе данных, и если в документах для этого пользователя не найдены параметры с отношением uid = id, вставьте параметры, используя идентификатор пользователя из пользовательской таблицы.

Я какое-то время играл с инъекцией, но я просто не могу заставить ее работать.

Вот sqlfiddle, который я создал

Мой последнийЯ использовал 3 запроса:

insert into urights ('', u.id, 1, 1, 0) (SELECT u.id FROM usr u WHERE (SELECT ur.id FROM urights ur WHERE ur.uid != u.id) )

SELECT id FROM usr u (INSERT INTO urights (id, uid, quotes, pos, nmode) VALUES ('', u.id, 1, 1, 0) WHERE uid NOT IN (u.id))

INSERT INTO urights (id, uid, quotes, pos, nmode) VALUES ('', a.id, 1, 1, 0) SELECT a.id FROM usr a WHERE NOT EXISTS (SELECT ur.uid FROM urights ur WHERE AS ur.uid = a.id)

Любые указатели на то, что я делаю неправильно, и рекомендации по исправлению этого наиболее ценны:)

1 Ответ

1 голос
/ 12 марта 2019

Обновленный ответ. Таким образом, вы по-прежнему перебираете идентификатор пользователя, которого нет при установке других значений в том же выражении.

INSERT urights (uid, quotes, pos, nmode) 
SELECT DISTINCT u.usernumber, 1, 1, 0
FROM usr u
WHERE
NOT EXISTS (SELECT uid FROM urights ur
          WHERE ur.uid = u.usernumber);

http://www.sqlfiddle.com/#!9/62b0ff9/1

...