Database Layout 我有一个数据库,它在单独的表中存储大量信息,包括不同类型用户(管理员、客户等)的用户名、密码和其他详细信息。
我想使用用户名搜索数据库并返回用户名所属的表的名称。这将告诉我他们是什么类型的用户。 像这样的事情:
从表1、表2、表3中选择表名 WHERE 用户名= thisValue
我对 mysql 没有太多经验,所以我什至不知道从哪里开始。
最佳答案
你说当然是在单独的表中
,但实际上,最好只有一个用户表,并有一个记录用户角色的role
列:
CREATE TABLE users (
id INT NOT NULL PRIMARY KEY,
role_id INT NOT NULL,
FOREIGN KEY (role_id) REFERENCES roles (id)
)
和一个roles
表:
CREATE TABLE roles (
id INT NOT NULL PRIMARY KEY,
desc VARCHAR(100) NOT NULL,
...
)
采用这种设计后,查找所有用户(例如管理员)将相当简单:
SELECT u.*
FROM users u
INNER JOIN roles r
ON u.role_id = r.id
WHERE
r.desc = 'admin';
此答案假设给定用户始终只有一个角色。为了考虑多个角色,我们可以在 users
和 roles
表之间使用联结表。
关于Mysql - 在选择查询结果中返回表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55699121/