需要MySQL中查询同一表的帮助吗
我有一个包含一些数据的表,我需要使用该表进行查询 我有:需要MySQL中查询同一表的帮助吗,mysql,Mysql,我有一个包含一些数据的表,我需要使用该表进行查询 我有: +----+-----------------+--------+--------+ | Id | Name | Parent | Mark | +----+-----------------+--------+--------+ | 1 | Name 1 | 0 | 0 | | 2 | Name 2 | 1 | 20 | | 3 |
+----+-----------------+--------+--------+
| Id | Name | Parent | Mark |
+----+-----------------+--------+--------+
| 1 | Name 1 | 0 | 0 |
| 2 | Name 2 | 1 | 20 |
| 3 | Name 3 | 2 | 45 |
| 4 | Name 4 | 0 | 50 |
+----+-----------------+--------+--------+
我需要:
+----+-----------------+--------+--------+
| Id | Name | Parent | Mark |
+----+-----------------+--------+--------+
| 2 | Name 2 | Name 1 | 20 |
| 3 | Name 3 | Name 2 | 45 |
+----+-----------------+--------+--------+
如何在MySQL中运行查询?您可以使用
内部连接使用以下内容。使用此解决方案还可以排除没有匹配父级的所有行
SELECT t1.Id, t1.Name, t2.Name AS Parent, t1.Mark
FROM table_name t1 INNER JOIN table_name t2 ON t1.Parent = t2.Id
ORDER BY t1.Id ASC
如果您想查看所有行(以及没有(匹配)父行的行),您可以将以下内容与左连接一起使用:
SELECT t1.Id, t1.Name, t2.Name AS Parent, t1.Mark
FROM table_name t1 LEFT JOIN table_name t2 ON t1.Parent = t2.Id
ORDER BY t1.Id ASC
也可以使用子选择而不是联接:
SELECT Id, Name, (SELECT Name FROM table_name t2 WHERE t2.Id = t1.Parent) AS Parent, Mark
FROM table_name t1
WHERE t1.Parent > 0
ORDER BY t1.Id ASC
您可以通过运行此查询获得结果
Select tablename.*
from tablename t1
inner join tablename t2 on t2.Id = t1.Parent ;
您可以在同一个表中执行内部联接,并检查用户是否具有父级
试试像这样的东西
select * from marksTbl m inner join marksTbl p on m.Id = p.Parent
您使用的是哪个版本的mysql?您必须用表名替换table\u name
t1
和t2
是表别名,用于连接表本身并区分列。还可以看看演示。