mysql - 如何根据mysql中的两列连接表?
问题描述
我有两张表,如下所述。
user table
id | username | password | status |
1 | Prajna | ***** | active |
2 | Akshata | ***** | active |
3 | Sanjana | ***** | inactive |
test table
id | project_name | created_by (user id) | edited_by (user id) |
1 | Test | 1 | 2 |
2 | Trial | 1 | 1 |
3 | Pro1 | 2 | 2 |
我正在尝试以下查询。
select project_name, user.username from test join user on user.id=test.created_by where user.status='active';
我想要下面的结果
我想检索结果如下我该如何检索?
project_name | username(created by) | username (edited by) |
Test | Prajna | Akshata |
Trial | Prajna | Prajna |
Pro1 | Akshata | Akshata |
解决方案
试试这个代码。
create table `user` ( `id` int, `username` varchar(20), `password` varchar(20), `status` varchar(20) )
insert into `user` (`id`,`username`,`password`,`status`) values (1, 'Prajna', '*****', 'active'), (2, 'Akshata', '*****', 'active'), (3, 'Sanjana', '*****', 'inactive')
create table `test` ( `id` int, `project_name` varchar(20), `created_by` int, `edited_by` int )
insert into `test` (`id`,`project_name`,`created_by`,`edited_by`) values (1, 'Test', 1, 2), (2, 'Trial', 1, 1), (3, 'Pro1', 2, 2)
SELECT `t`.`project_name`, `ua`.`username` as 'username (created by)' , `ub`.`username` as 'username (edited by)' FROM `test` `t` JOIN `user` `ua` ON `t`.`created_by` = `ua`.`id` JOIN `user` `ub` ON `t`.`edited_by` = `ub`.`id` WHERE `ua`.`status` = 'active' AND `ub`.`status` = 'active' order by `t`.`id`
项目名称 | 用户名(创建者) | 用户名(编辑) :----------- | :-------------------- | :-------------------- 测试 | 般若 | 阿克沙塔 试用 | 般若 | 般若 临1 | 阿克沙塔 | 阿克沙塔
db<>在这里摆弄
推荐阅读
- java - 如何修复 Tomcat 应用程序 java.nio.file.AccessDeniedException
- python - 带有定义标题的 Dict 到 CSV 的字典
- python - 受限网络最大流量
- asp.net-mvc - 如何将富文本字段添加到自定义 Sitefinity 小部件?
- c# - 如何更改 Xamarin iOS 中的标签栏颜色?
- azure - Get-AzureADAuditDirectoryLogs 查找在那里更新电话号码的用户
- c++ - 如何在 QThread 中传递引用
- android - 如何在 Android 中的 TextView 和 EditText 下方添加下划线
- android - 数组列表预期的属性 getter 或 setter
- excel - “意外错误”(我可以修复它,或者可能有 VBA “x”吗?)