MySQL-在选择查询结果中返回表名

时间:2019-04-16 00:58:08

标签: mysql select

Database Layout 我有一个数据库,它在单独的表中存储了一堆信息,包括用户名,密码和不同类型的用户(管理员,客户等)的其他详细信息。

我想使用用户名搜索数据库并返回用户名所属表的名称。这将告诉我他们是哪种类型的用户。 像这样:

从table1,table2,table3中选择tableName WHERE username = thisValue

我对mysql没有太多经验,所以我什至不知道从哪里开始。

1 个答案:

答案 0 :(得分:1)

您说过in seperate tables of course,但实际上最好只使用一个用户表,并带有一个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';

此答案假设给定的用户只会始终拥有一个角色。为了说明多个角色,我们可以在usersroles表之间使用联结表。