我对SQL有些新意,所以我还在尝试学习一些简单的东西。
现在,我的应用程序(客户,代表,经理)拥有多个不同访问级别的表。
不能在这些表之间共享用户名。我所担心的是尝试根据用户名选择用户行。
如果只有一个表供用户使用,我很容易知道怎么做,但我不确定如何同时搜索多个表。
此外,如果找到用户名,有没有办法返回它找到该用户名的表的名称?
非常感谢你!
答案 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