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
语法。