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

标签 mysql select

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';

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

关于Mysql - 在选择查询结果中返回表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55699121/

相关文章:

mysql - SQL 查询 : How to get data from four different tables

PHP 未正确回显下拉菜单的值

从表中选择时 PHP 变量错误

php - MySql Select语句问题

css - 删除空白区域是 SELECT angular app IE-CSS

php - 仅显示 MySQL future 的数据库记录

MySQL 性能 - CHAR(64) 与 VARCHAR(64)

php - 通过PHP检查MySQL表中是否存在列

mysql - 非企业MySQL INNODB引擎如何进行物理备份

MySQL 错误代码 1265 : what's wrong with my csv data?