Mysql 从多对多表中选择数据
我试图从多对多表中获取数据, 但是我尝试做的查询不起作用Mysql 从多对多表中选择数据,mysql,sql,Mysql,Sql,我试图从多对多表中获取数据, 但是我尝试做的查询不起作用 USERS TABLE +-----------+ | ID | NAME | +-----------+ | 1 | dani | +-----------+ | 2 | john | +-----------+ TASKS TABLE +------------+ | ID | NAME | +------------+ | 1 | learn | +------------+ | 2 | play | +-------
USERS TABLE
+-----------+
| ID | NAME |
+-----------+
| 1 | dani |
+-----------+
| 2 | john |
+-----------+
TASKS TABLE
+------------+
| ID | NAME |
+------------+
| 1 | learn |
+------------+
| 2 | play |
+------------+
| 3 | eat |
+------------+
USERS-TASK TABLE (MANY-TO-MANY)
+--------------------+
| USER_ID | TASK_ID |
+--------------------+
| 1 | 1 |
+--------------------+
| 1 | 2 |
+--------------------+
| 2 | 1 |
+--------------------+
我正试图通过提供ID来获取USER_ID 2(即1条记录)或USER_ID 1(即2条记录)的任务,但查询不起作用
SELECT TASKS.name
FROM
USERS,
TASKS,
user_task
INNER JOIN
USERS
ON user_task.UserId = USERS.id
INNER JOIN
TASKS
ON user_task.TaskId = TASKS.id
WHERE USERS.id = 1;
希望你能帮我做这件事。试试下面的-你已经混合加入了
SELECT TASKS.name
FROM user_task
INNER JOIN
USERS
ON user_task.UserId = USERS.id
INNER JOIN
TASKS
ON user_task.TaskId = TASKS.id
WHERE USERS.id = 1
您的加入不正确,请尝试以下操作
SELECT
t.name
FROM user_task ut
INNER JOIN USERS u
ON ut.UserId = u.id
INNER JOIN TASKS t
ON ut.TaskId = t.id
WHERE USERS.id = 1;
如果您有一个表存储您在两个表之间的链接,为什么不这样做:
SELECT TASKS.name
FROM
TASKS
INNER JOIN USERS-TASK ON TASKS.ID = USERS-TASK.TASK_ID
WHERE
USERS-TASK.USER_ID = 1
您的加入是错误的,您的加入来自:
USERS,
TASKS,
user_task
在你加入之后:
INNER JOIN
USERS
ON user_task.UserId = USERS.id
INNER JOIN
TASKS
ON user_task.TaskId = TASKS.id
只需删除无用的“from”,就可以了不要在from
子句中使用逗号。始终使用正确、明确、标准、可读的JOIN
语法。