gpt4 book ai didi

mysql - INNER JOIN 相同的表类别和子类别

转载 作者:行者123 更新时间:2023-11-29 03:50:38 27 4
gpt4 key购买 nike

我需要在 mysql 表中进行内部连接,但它是同一张表。

我有一个表类别:该表的一个示例是:

id | id_lingua | id_registro | categoria | nivel
1 1 1 Pastas 0
2 2 1 Folders 0
3 3 1 Carpetas 0
4 1 2 Feminina 1
5 2 2 Women 1
6 3 2 Mujeres 1

nivel 是定义它是类别还是子类别的关键,我需要列出这些类别,然后在将包含父类别的 id_registro 的字段中指定父类别级别。

不知道我说清楚了没有,这个表的inner join怎么办?

表格是:

id  id_lingua  id_registro  categoria  nivel
1 1 3 Pastas 0
2 2 3 Folders 0
3 3 3 Carpetas 0
4 1 4 Feminina 3
5 2 4 Women 3
6 3 4 Mujeres 3

和这个咨询:

SELECT cat.*, parent.categoria as nome
FROM categorias cat
INNER JOIN categorias parent
ON cat.nivel=parent.id_registro
AND cat.id_lingua=2

返回:

id  id_lingua  id_registro  categoria  nivel  nome
5 2 4 Women 3 Pastas
5 2 4 Women 3 Folders
5 2 4 Women 3 Carpetas

最佳答案

我认为您需要 LEFT JOIN(显示 parent 未匹配的行)。

您似乎也想在 id_lingua 上进行匹配。

SELECT cat.*, parent.categoria as nome
FROM categorias cat
LEFT JOIN categorias parent
ON cat.nivel = parent.id_registro
AND cat.id_lingua = parent.id_lingua
WHERE cat.id_lingua = 2

您可能还想添加 IFNULL ,因为 parent.* 将是 NULL 不匹配,看起来你想要显示 Empty :(除非你的意思是一个实际的空字符串)

SELECT cat.*, IFNULL(parent.categoria, 'Empty') as nome
FROM categorias cat
LEFT JOIN categorias parent
ON cat.nivel = parent.id_registro
AND cat.id_lingua = parent.id_lingua
WHERE cat.id_lingua = 2

This answer有一张很好的图片解释了不同连接之间的区别:

Image

关于mysql - INNER JOIN 相同的表类别和子类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16040973/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com