从Mysql中的同一个表中获取in()中子记录的父名称

从Mysql中的同一个表中获取in()中子记录的父名称,mysql,Mysql,我有一张这样的桌子 tax_id tax_name parent_tax_id 1 Sales Tax 0 2 Lodging Tax 0 3. Resort Tax 1 4. Hospitality Tax 2 Select tax_name, tax_id from taxes WHERE tax_id IN (3,4). 上面的查询将获得两行id 3和4,我

我有一张这样的桌子

tax_id    tax_name          parent_tax_id
1         Sales Tax         0
2         Lodging Tax       0
3.        Resort Tax        1
4.        Hospitality Tax   2

Select tax_name, tax_id from taxes WHERE tax_id IN (3,4).
上面的查询将获得两行id 3和4,我需要在同一行中获得其父项的tax_名称:

SELECT tax_name, tax_id, 
(SELECT tax_name FROM taxes ....) as parent_tax_name 
from taxes WHERE tax_id IN (3,4)
我只需要在()中使用,请让我知道实现这一点的方法


提前感谢

使用连接本身。左连接,因为不是每一行都有父行

SELECT 
  taxes.tax_name, 
  taxes.tax_id, 
  parent.tax_name AS parent_tax_name 
FROM
  taxes LEFT JOIN taxes AS parent ON taxes.parent_tax_id = parent.tax_id
WHERE 
  taxes.tax_id IN (3,4)

使用连接自身。左连接,因为不是每一行都有父行

SELECT 
  taxes.tax_name, 
  taxes.tax_id, 
  parent.tax_name AS parent_tax_name 
FROM
  taxes LEFT JOIN taxes AS parent ON taxes.parent_tax_id = parent.tax_id
WHERE 
  taxes.tax_id IN (3,4)

您可以像下面这样使用连接查询

Select t.tax_name, t.tax_id, tt.tax_name as parent_tax from taxes as t left join taxes as tt on (t.parent_tax_id = tt.tax_id) WHERE t.tax_id IN (3,4)

parent\u tax将是父行的tax\u名称

您可以使用下面的连接查询

Select t.tax_name, t.tax_id, tt.tax_name as parent_tax from taxes as t left join taxes as tt on (t.parent_tax_id = tt.tax_id) WHERE t.tax_id IN (3,4)
parent\u tax将是父行的tax\u名称