Какие теги отсутствуют в базе данных? - PullRequest
1 голос
/ 24 ноября 2008

Учитывая набор пользовательских тегов, как определить, какие из не являются в таблице тегов с 1 оператором SQL?

Предполагая схему таблицы tags (id, tag), и я использую mysql, если есть оптимизация, о которой я не знаю.

спасибо

Ответы [ 3 ]

4 голосов
/ 24 ноября 2008

SELECT  Tag
FROM    UserSpecifiedTags
  LEFT OUTER JOIN AllTags ON UserSpecifiedTags.Tag = AllTags.Tag
WHERE   AllTags.Tag IS NULL

Это должно вернуть то, что вы хотите. По моему опыту, выполнение объединения и поиск строк, у которых нет соответствия, на намного быстрее, чем с использованием оператора IN.

1 голос
/ 24 ноября 2008
select * from canonical_list_of_tags where tag not in (select tag from used_tags) 

По крайней мере, это работает в T-SQL для SQL Server ...

Редактировать: Предполагая, что таблица canonical_list_of_tags заполнена с результатом " С учетом коллекции пользовательских тегов "

0 голосов
/ 24 ноября 2008
select
    utt.tagName
from
    userTypedTags utt
    left join tag t on utt.tagName = t.tag
where
    t.ID is null
    and utt.userID = <ID of the User in question>

Это предполагает, что у вас есть таблица

userTypedTags(userID, tagName)

Я добавил связанный вопрос

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...