Получение данных MySQL из taglist и прямого поиска

Я делаю поиск в своей базе данных. В то же время мне установили систему маркировки. Не все помечено все же, таким образом, мне также нужен 'старомодный' результат моей базы данных. Позвольте мне прояснить:

Table A
+----+----------------------------+
| ID | description                |
+----+----------------------------+
|  0 | horse going bad            |
|  1 | Older Years of Resolutions |
|  2 | The pirate                 |
|  3 | The Wish list              |
|  4 | list that's no list        |
+----+----------------------------+

table TAGS
+----+------------+
| ID | tag        |
+----+------------+
|  0 | list       |
|  1 | knockknock |
+----+------------+

table TAGLINKS
+-------+--------+
| TAGID | JOKEID |
+-------+--------+
|   0   |    2   |
|   0   |    3   |
+-------+--------+

Когда я делаю этот поиск:

select * from A where locate('list',description)

Я достану ID 3 и 4 из стола A, который является большим.

Когда я делаю этот поиск:

select * from tags
   join taglinks on tagid=tags.id
   join A on A.id=jokeid
where tag='list'

Я достаю ID 2 и 3 из стола A.

То, что я хочу возвратить, является ID 2, 3 и 4. Так соединение двух результатов. Я попробовал это:

select * from tags
   join taglinks on tagid=tags.id
   join A on A.id=jokeid or locate('list',description)

Это, кажется, дает мне правильный результат, но это настолько медленно, это забивает сервер (в действительности, столы НАМНОГО больше, чем примеры здесь). Причина я хочу объединенный вопрос, состоит в том, что мне нужны функции как ORDER BY и ПРЕДЕЛ. Таким образом, я надеюсь получать объединенный результат вышеупомянутых двух вопросов.

0
nl ja de
Действительно, был! Спасибо!
добавлено автор patrick, источник
союз - решение для вашей проблемы
добавлено автор Muhammad Raheel, источник
Что останавливает вас из просто СОЮЗ луг два быстрых вопроса?
добавлено автор Eugen Rieck, источник

1 ответы

Поскольку Ойген Рик и Рэхил Шань указали, что ответ - союз:

select A.* from tags
  join taglinks on tagid=tags.id
  join A on A.id=jokeid
where tag="list"
UNION
select * from A where locate("list",description)

Дает мне ID 2, 3 и 4

1
добавлено
DBA - русскоговорящее сообщество
DBA - русскоговорящее сообщество
1 345 участник(ов)

Общаемся и обсуждаем темы, посвященные DBA, PostgreSQL, Redis, MongoDB, MySQL, neo4j, riak и т.д. См. также: @devops_ru, @kubernetes_ru, @docker_ru, @nodejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было полезным и комфортным.

MySQL
MySQL
995 участник(ов)

The group is about MySQL. For code use hastebin.com. Admin: @smlkw

SqlCom.ru - Стиль жизни SQL
SqlCom.ru - Стиль жизни SQL
908 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только MS SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz). Предложения в @sql_ninja

SQL_Ninja
SQL_Ninja
340 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz)