mysql - 从数据库表中获取相似的行

标签 mysql sql sql-server

你好 friend 我有以下表结构 报价表

enter image description here

我想访问特定 _id(quoteId) 的所有相似引语(具有相同的 author_id 和 category_id)

相似引号是指该表中所有行的所有列,具有相同的 category_id 和相同的 author_id。如果两个引用的作者和类别相同,则可以认为它们是相似的。

最佳答案

相同的作者 ID 和类别 ID?

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

到查询结束。

关于mysql - 从数据库表中获取相似的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5830964/

相关文章:

php - 流交互 As3 -> PHP -> Mysql -> C++

sql - 具有由联接表的不同行组成的列的 select 语句

mysql - 从表中获取、切换行和列并按另一个列值进行过滤

sql - plpgsql - 在声明语句中使用动态表名

sql-server - SQL函数检查日期是否在另一个表的2个日期之间

mysql - 使用 select..where..in 和 join 更新多行

mysql - cakephp AND 条件

sql-server - 需要帮助通过 PowerShell 模块 "PSExcel"将工作表添加到现有 xlsx

sql-server - 不清楚我需要哪种类型的锁来避免在唯一字段上重复插入

php准备语句