Получение похожих строк из таблицы базы данных

#mysql #sql #sql-server

#mysql #sql #sql-сервер

Вопрос:

Здравствуйте, друзья, у меня следующая структура таблицы quote Table

введите описание изображения здесь

Я хочу получить доступ ко всем похожим кавычкам (которые имеют одинаковые author_id и category_id) для определенного _id(QuoteID)

Похожие кавычки означают, что все столбцы всех этих строк этой таблицы имеют одинаковый category_id и одинаковый author_id. Две цитаты можно считать похожими, если их авторы одинаковы и категория одинакова.

Комментарии:

1. Что вы подразумеваете под похожими кавычками? какой набор результатов вы ожидаете?

2. поиск «полнотекстовое индексирование sql Server»

Ответ №1:

Тот же идентификатор автора и категории?

 SELECT `related_quote`.*
FROM `quote` AS `main_quote`
LEFT JOIN `quote` AS `related_quote` USING(`author_id`, `category_id`)
WHERE `main_quote`.`_id` = QUOTE_ID
  

Это позволит получить исходную цитату (т.Е. QUOTE_ID) и все, что с этим связано.

 mysql> SELECT `related_quote`.*
    -> FROM `quote` AS `main_quote`
    -> LEFT JOIN `quote` AS `related_quote` USING(`author_id`, `category_id`)
    -> WHERE `main_quote`.`_id` = 1;
 ------ ---------------- ----------- ------------- 
| _id  | content        | author_id | category_id |
 ------ ---------------- ----------- ------------- 
|    1 | test           |         1 |           1 |
|    2 | test related   |         1 |           1 |
|    3 | test related 2 |         1 |           1 |
 ------ ---------------- ----------- ------------- 
3 rows in set (0.01 sec)
  

Вы можете удалить QUOTE_ID из результирующего набора, просто добавив

 AND `related_quote`.`_id` != QUOTE_ID
  

до конца запроса.

Комментарии:

1. Без проблем, добавлено быстрое предложение, которое вы можете пометить в конце, чтобы исключить текущий запрос из результирующего набора.

2. я. спасибо, дайте мне знать об этом, чтобы из результата я мог удалить один

Ответ №2:

 select 
    q1.* 
from 
    quotes q1
inner join 
   (select
      author_id,
      category_id
    from 
        quotes
    where 
        _id = 1) q2
ON 
    q1.author_id = q2.author_id
AND 
    q1.category_id = q2.category_id
  

Комментарии:

1. в этом запросе, если псевдоним таблицы цитирования равен q1, то какой тогда q2?

2. Объединение (т.е. исходная цитата).