从引用的表中获取字符串

时间:2014-01-28 15:47:14

标签: mysql sql

我是SQL语言的新手。我可以做一个基本的选择,但是为了提高性能,我很想知道是否有可能将我目前正在做的两个查询合并为一个。

场景:有两个表格。表1有几列,其中一列是名为'user'的VARCHAR(45),另一列是名为'gid'的INT。在第二个表中,有一个名为'gid'(INT)的主键列和一个名为'permissions'的列,它是一个TEXT列,它包含由';'分隔的值。

我有一个用户名,并希望权限列中包含该文本。我目前的方式是获取第一个表的gid,然后使用gid进行第二次查询以获取权限。

我听说还有其他方法可以做到这一点,我在Google上搜索过,但我不知道该怎么办。

编辑:

像这样:

enter image description here

2 个答案:

答案 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搜索中阅读有关联接的更多信息。