Как правильно выбрать тег из столбца тега со списком тегов? - PullRequest
0 голосов
/ 16 ноября 2011

Как я могу точно выбрать тег из столбца тега со списком тегов?

Например, ниже приведена таблица, созданная с помощью запроса, но затем я хочу сузить область поиска,

page_id         tags
1               tile-1,tile-12,tile-10
2               tile-1,tile-10
3               tile-12,tile-10
4               tile-15,tile-16

результат, который я получаю, это страницы только с tile-1,

page_id         tags
1               tile-1,tile-12,tile-10
2               tile-1,tile-10

Но запрос, над которым я работаю ниже, возвращает все из них, включая tile-12, tile-10 и т. Д.

SELECT*
FROM (...) AS k
WHERE k.tags LIKE '%tile-1%'

Могу ли я не использовать LIKE?

Ответы [ 2 ]

1 голос
/ 16 ноября 2011

Предлагаю изменить схему на page_id, tag.так что ваши данные должны выглядеть следующим образом

1           tile-1
1           tile-12
1           tile-10
2           tile-1
2           tile-10
3           tile-12
3           tile-10
4           tile-15
4           tile-16

Тогда вы можете сделать все это с помощью простого запроса

SELECT * FROM table WHERE tag = 'title-1';

Таким образом, вам не придется искать в таблицесканирует) - это станет проблемой, когда у таблицы будет больше строк (масштабируемое решение).Во-вторых, вы можете использовать индекс для столбца тега, чтобы сделать поиск очень быстрым.

0 голосов
/ 16 ноября 2011

Поскольку вы используете запятую в качестве разделителя, ваше LIKE -статное выражение должно включать запятую:

SELECT * FROM table WHERE tags LIKE '%title-1,%';
...