这有效,但它返回所有数据,我不需要它。
select *
from
`sec_permission` a
INNER JOIN
`sec_role_permission` b
on a.permission_id = b.permission_id
INNER JOIN
`sec_role` c
on b.role_id = c.`role_id`;
但是当我指定数据时
select `sec_permission`.`name`, `sec_role`.`name`
from
`sec_permission` a
INNER JOIN
`sec_role_permission` b
on a.permission_id = b.permission_id
INNER JOIN
`sec_role` c
on b.role_id = c.`role_id`;
它返回消息Unknown column 'sec_permission.name' in 'field list
。
该列确实存在。
答案 0 :(得分:4)
分配表别名时,必须在引用表时使用它。由于您将别名a
分配给sec_permission
,因此您必须使用a.name
,而不是sec_permission.name
。
答案 1 :(得分:3)
如果在表名中使用别名,则还应在选择列名
中使用此别名 select a.`name`, b.`name`
from `sec_permission` a
INNER JOIN `sec_role_permission` b
on a.permission_id = b.permission_id
INNER JOIN `sec_role` c
on b.role_id = c.`role_id`;