#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. Объединение (т.е. исходная цитата).