javascript - 如果我使用 SELECT WHERE 查找数据,如何返回数据所在的列名?
问题描述
我什至不确定从 SELECT 查询本身从哪里开始,但想象一下我有一个下表:
ID Environment Position1 Position2 Position3
1 Operations Tech Survey Phone
2 Warehouse Stocker Maintenance Trucker
3 Office Logger Janitor
当我搜索特定职位名称但我需要知道它在哪一列下时,我将如何执行 SELECT 查询来给我列名?
例子:
SELECT columnname
FROM table
WHERE Position1 = 'Janitor' OR Position2 = 'Janitor' OR Position3 = 'Janitor'
我不知道是否有更好的方法可以做到这一点,但这个想法是每个用户都被分配了 Position1-3 和一个环境。如果它们被移动到另一个环境,它们会保留 Position#,但它的标签会发生变化。
这些数据是虚假的,老实说更令人困惑,因为我不想泄露真实数据。有可能我的桌子设置不好。
解决方案
使用CASE
表达式。
SELECT CASE 'Janitor'
WHEN Position1 THEN 'Position1'
WHEN Position2 THEN 'Position2'
ELSE 'Position3'
END AS columnname
FROM table
WHERE 'Janitor' IN (Position1, Position2, Position3)
但是最好使用这样的表格来规范化您的数据。table1_id
是原始表的外键。
table1_id PositionNum Position
1 1 Tech
1 2 Survey
1 3 Phone
2 1 Stocker
2 2 Maintenance
2 3 Trucker
3 1 Logger
3 2 Janitor
SELECT PositionNum
FROM thisTable
WHERE Position = 'Janitor'
推荐阅读
- c - 在 C 中删除图书馆管理系统中的记录时出现意外行为
- c++ - C++/Cmake - 无法编译 MySQL 连接器
- spring-boot - Spring Integration HttpOutbound 在从服务器接收到 http 标头 ETag: 1 时抛出触发 ErrorChannel
- python - 根据之前的分类对文本进行分类
- electron - 在 Windows 上构建 Atom 文本编辑器失败
- django - 从 Django 中删除模板
- nativescript - Nativescript 错误:执行 webpack 失败,退出代码为 1
- javascript - 发出 GET 请求时向 axios 添加标头字段后的 CORS 问题
- javascript - 类组件不是每次都收到道具
- javascript - 如何在页面上绘制多个(动态生成的)图表(使用 chartjs)但一次只显示一个