繁体   English   中英

选择语句,但表是子查询?

[英]Select statement, but table is a subquery?

我按角色划分用户,因此基本用户表的信息很少,其余信息存储在单独的表中,其中存储了特定于角色的信息。

因此,我想在SQL中执行SELECT语句,但是Im选择表必须是子查询的值。

SELECT * FROM (subquery);

在这种情况下,子查询是用户表中用户角色的值,因此我知道在哪里查找其余信息。

SELECT role FROM users WHERE email = 'jhondoe@example.com';

全部一起:

SELECT * FROM (SELECT role FROM users WHERE email = 'jhondoe@example.com');

(理论上)这会变成这样:

SELECT * FROM students;
SELECT * FROM parents;
SELECT * FROM teachers;

取决于电子邮件;

您可以将查询连接成一个变量,然后使用EXEC函数执行它:

declare @query nvarchar(MAX);
SET @query = 'SELECT * FROM ' + (SELECT role FROM users WHERE email = 'jhondoe@example.com');
EXEC(@query)

或者,如果所有表都具有相同的结构,则可以将它们合并在一起,然后选择与正确角色匹配的记录:

SELECT * FROM

(SELECT *, 'students' as PersonRole FROM students
UNION ALL
SELECT *, 'parents' as PersonRole FROM parents
UNION ALL
SELECT *, 'teachers' as PersonRole FROM teachers)

as tMerged

WHERE PersonRole IN (SELECT role FROM users WHERE email = 'jhondoe@example.com')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM