Mysql SQL在同一个表中递归选择
我有一张这样结构的桌子: pedido\u venda\u餐厅Mysql SQL在同一个表中递归选择,mysql,sql,Mysql,Sql,我有一张这样结构的桌子: pedido\u venda\u餐厅 idpedido供应商餐厅,索引PK idpedido供应商餐厅负责人,FK(指向同一表格的idpedido供应商餐厅) codigo\u pv\u internoVarChar UNIQUE 我做了一个查询,其目标是通过用户键入的codigo\u pv\u interno查询应返回以下所有行: 键入codigo\u pv\u interno 使idpedido\u venda\u restaurant\u负责人等于键入co
,索引PKidpedido供应商餐厅
,FK(指向同一表格的idpedido供应商餐厅负责人
)idpedido供应商餐厅
VarChar UNIQUEcodigo\u pv\u interno
我做了一个查询,其目标是通过用户键入的
codigo\u pv\u interno
查询应返回以下所有行:
- 键入
李>codigo\u pv\u interno
- 使
等于键入idpedido\u venda\u restaurant\u负责人
所在行的codigo\u pv\u interno
李>idpedido\u venda\u restaurant\u负责人
- 使
等于键入idpedido\u venda\u restaurant\u负责人
所在行的codigo\u pv\u interno
李>idpedido\u venda\u restaurant
实际上,这个查询已经可以运行并返回所需的结果,但由于我对SQL的了解程度较低,我确实认为应该存在一种有效的方法来执行该查询。您可以使用内部联接来检查表中是否存在元素:
SELECT pvr.idpedido_venda_restaurante, pvr.codigo_pv_interno, pvr.idpedido_venda_restaurante_principal
FROM pedido_venda_restaurante pvr
INNER JOIN pedido_venda_restaurante as pedido_origem
ON pedido_origem.idpedido_venda_restaurante = pvr.idpedido_venda_restaurante
WHERE pvr.pedido_origem.codigo_pv_interno = '003'
对要搜索值的其他表格重复此过程请参见:
SELECT pvr.idpedido_venda_restaurante, pvr.codigo_pv_interno, pvr.idpedido_venda_restaurante_principal
FROM pedido_venda_restaurante pvr
INNER JOIN pedido_venda_restaurante as pedido_origem
ON pedido_origem.idpedido_venda_restaurante = pvr.idpedido_venda_restaurante
WHERE pvr.pedido_origem.codigo_pv_interno = '003'