搜索特定行的多个SQL表,然后返回行和表名

时间:2016-04-11 14:56:50

标签: php mysql sql-server

我对SQL有些新意,所以我还在尝试学习一些简单的东西。

现在,我的应用程序(客户,代表,经理)拥有多个不同访问级别的表。

不能在这些表之间共享用户名。我所担心的是尝试根据用户名选择用户行。

如果只有一个表供用户使用,我很容易知道怎么做,但我不确定如何同时搜索多个表。

此外,如果找到用户名,有没有办法返回它找到该用户名的表的名称?

非常感谢你!

2 个答案:

答案 0 :(得分:2)

您可能只需要一个简单的UNION

SELECT 'table1' as tab, c1, c2, c3 FROM table1 WHERE uid='xxx'
UNION
SELECT 'table2' as tab, c1, c2, c3 FROM table2 WHERE uid='xxx'
UNION
SELECT 'table3' as tab, c1, c2, c3 FROM table3 WHERE uid='xxx'

由于用户xxx只能存在于其中一个表中,您只能获得一行,您将获得您感兴趣的所有列以及包含您的表名的第一列

答案 1 :(得分:0)

假设所有表格'布局是一样的:

SELECT  *
FROM    (
        SELECT  'customers' tn, *
        FROM    customers
        UNION ALL
        SELECT  'managers' tn, *
        FROM    managers
        UNION ALL
        SELECT  'representatives' tn, *
        FROM    representatives
        ) q
WHERE   username = @myusername