mysql 在一条语句中对同一表执行多个查询

q0qdq0h2  于 2023-02-03  发布在  Mysql
关注(0)|答案(3)|浏览(147)

我有一个类别的MySQL表,看起来像:

id    name    parent
1     cat1    0
2     cat2    0
3     cat3    1
4     cat4    1
5     cat5    2

让我们以类别4为例,我希望在同一个SQL查询中获得父类别(1)及其名称(cat1)。
到目前为止,我是这样做的:

SELECT parent AS p FROM categories WHERE id=4;

然后在另一个查询中

SELECT name FROM categories WHERE id=p;

但是考虑到表的大小,我希望通过将这2个查询变成1个来加快速度。

ee7vknir

ee7vknir1#

这个呢?

SELECT parent, name FROM categories WHERE id=(SELECT parent FROM categories WHERE id=4);
nlejzf6q

nlejzf6q2#

SELECT p.id, p.name FROM categories p, categories s WHERE s.id=4 AND p.id=s.parent;
km0tfn4u

km0tfn4u3#

可以通过左连接完成。

SELECT 
   b.name as PCatName, b.parent as ParentID
FROM categories a 
LEFT JOIN categories b ON b.parent=a.parent AND b.id <> a.id
WHERE a.id=4

相关问题