首页 > 解决方案 > 如何根据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              |

标签: mysql

解决方案


试试这个代码。

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<>在这里摆弄


推荐阅读