是否可以使用TableName

时间:2017-03-23 07:05:47

标签: mysql sql mysqli

我有两张表格如下:

person_detail

id     name    role_id
---------------------------
1      Hamdan    1
2      Sara      2
3      John      2

tbl_user_roles

id     role
---------------
1      Admin
2      Author

我需要的结果:

id     name    user_role
---------------------------
1      Hamdan    Admin
2      Sara      Author
3      John      Author
  

注意:是否可以?在[Select * from tblPerson]语句中使用,因为我不想键入每个字段名称,如:   我有这两个(2)解决方案,但我只想使用SELECT语句。

解决方案1 ​​

SELECT p.id, p.person_name, roles.role
FROM person_detail p
INNER join user_roles roles
ON p.role_id = roles.id

解决方案2

SELECT p.id,
p.person_name,
(SELECT user_roles.role FROM dbo.user_roles WHERE id = p.role_id) As 'user_role' 
FROM dbo.person_detail p

::两者都运行正常,但我不希望使用上述两种解决方案

3 个答案:

答案 0 :(得分:1)

以下是没有JOIN关键字的另一种解决方案

示例1:

SELECT
  *
FROM
  `person_detail`,
  `tbl_user_roles`
WHERE
  person_detail.role_id = tbl_user_roles.id
  

注意:以上查询将返回两个表中的所有列

示例2:

SELECT
  person_detail.id,person_detail.name,tbl_user_roles.role AS user_role
FROM
  `person_detail`,
  `tbl_user_roles`
WHERE
  person_detail.role_id = tbl_user_roles.id
  

注意:以上查询将返回两个表中的选定列

重要说明:但您不应使用此类查询。在使用多个表操作数据时,您应该使用JOIN关键字

答案 1 :(得分:0)

您可以使用以下内容,但使用asterix是一个不好的实践,除非它是用于测试目的。

SELECT p.*, roles.role
FROM person_detail p
INNER join user_roles roles
ON p.role_id = roles.id

答案 2 :(得分:0)

您可以创建一个view想要查看的内容:

CREATE VIEW view_user_roles AS
SELECT p.id, p.person_name, roles.role
FROM person_detail p
INNER join user_roles roles
ON p.role_id = roles.id

然后从视图中选择:

select * from view_user_roles