我是SQL语言的新手。我可以做一个基本的选择,但是为了提高性能,我很想知道是否有可能将我目前正在做的两个查询合并为一个。
场景:有两个表格。表1有几列,其中一列是名为'user'的VARCHAR(45),另一列是名为'gid'的INT。在第二个表中,有一个名为'gid'(INT)的主键列和一个名为'permissions'的列,它是一个TEXT列,它包含由';'分隔的值。
我有一个用户名,并希望权限列中包含该文本。我目前的方式是获取第一个表的gid,然后使用gid进行第二次查询以获取权限。
我听说还有其他方法可以做到这一点,我在Google上搜索过,但我不知道该怎么办。
编辑:
像这样:
答案 0 :(得分:1)
select t2.permissions
from table1 t1, table2 t2
where t1.user = '<SPECIFIED NAME>'
and t1.gid = t2.gid;
或者您可以使用INNER JOIN
语法:
select t2.permissions
from table1 t1
inner join table2 t2 on t1.gid = t2.gid
where t1.user = '<SPECIFIED VALUE>'
答案 1 :(得分:0)
要执行此操作,请使用JOIN。连接在select语句中连接两个表。
喜欢这个
select *
from usertable u
join permissiontable p on u.gid = p.gid
这将为您提供两个表中连接了id列的所有列。您可以像处理任何表一样处理连接表(例如,在选择列表中选择一个列的子集,添加where子句等)。
您可以在任何介绍sql book或Google搜索中阅读有关联接的更多信息。