mysql从多个表中选择唯一值

标签 mysql relational-database

我的数据如下所示:

table:master
topic| subtopic |  task  
recreation | skiiing  | use poles
recreation | skiiing  | wax skiis
events  | block party | run electricity
events  | skiing | purchase banner

我将数据移动到关系型 mysql 数据库中,所以它看起来像这样

table: topics
id | name
1 | recreation
2 | events
----------------------
table : subtopics
id | name | topic
1 | skiing | 1
2 | block party | 2
3 | skiing | 2

我很难在任务表中不重复的情况下抓取任务。

我当前的声明如下:

INSERT INTO TASKS
SELECT
 master.task,
 subtopics.id
FROM master,subtopics
WHERE master.subtopic = subtopic.name
AND master.topic = topic.name

当我运行它时,结果给了我 2 个“使用极点”实例,一个指向子主题 1,另一个指向子主题 3 - 这是不正确的。

如何运行 SELECT 语句以仅提取主题/子主题组合特有的任务?

最佳答案

您需要连接所有三个表(主题不会出现在查询的 FROM 子句中,但会出现在 WHERE 子句中)。

INSERT INTO TASKS
SELECT master.task, subtopics.id
FROM master
JOIN topic ON master.topic = topic.name
JOIN subtopics ON master.subtopic = subtopics.name AND subtopics.topic = topic.id

关于mysql从多个表中选择唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31680622/

相关文章:

database - 具有显示顺序的文件系统(文件、文件夹)

php - 如何在变量中获取行并用逗号分隔值?

mysql - SQL插入查询太慢

PHP - 从数据库中分配值,表中的 html 链接

Mysql从多个表中获取数据

mysql - 计数函数不按 mysql 查询对组中的空值返回 0 计数

mysql - MySQL 关系划分(IN AND 而不是 IN OR)实现的性能差异是什么?

mysql - 平面文件作为输入 - MySQL 最佳实践

database - 关系数据库中的高级功能如何工作?

php - 我可以在 laravel 查询生成器中同时使用 `join` 和 `with` 吗?