SQL求助,如何查询?

forwy 发布于 2018/04/12 16:02
阅读 457
收藏 0

表 T_USER

USER_ID USER_NAME
1 USER_A
2 USER_B

表 T_ROLE

USER_ID USER_ROLE
1 ROLE_1
1 ROLE_2

 

我想查询的结果为:

USER_ID USER_ROLE USER_NAME
1 ROLE_1 USER_A
1 ROLE_2 USER_A
2   USER_B

 

以下为表和数据的sql脚本。

drop table if exists T_USER;
CREATE TABLE T_USER(
USER_ID INT,
USER_NAME VARCHAR(25)
);
INSERT INTO T_USER VALUES(1,'USER_A');
INSERT INTO T_USER VALUES(2,'USER_B');

drop table if exists T_ROLE;
CREATE TABLE T_ROLE(
USER_ID INT,
USER_ROLE VARCHAR(25)
);
INSERT INTO T_ROLE VALUES(1,'ROLE_1');
INSERT INTO T_ROLE VALUES(1,'ROLE_2');
加载中
0
不知道你想干嘛
不知道你想干嘛
-- drop function if exists T_USER;
CREATE TABLE #T_USER (USER_ID INT, USER_NAME VARCHAR(25));

INSERT INTO #T_USER
VALUES (1, 'USER_A');
INSERT INTO #T_USER
VALUES (2, 'USER_B');

-- drop function if exists T_ROLE;
CREATE TABLE #T_ROLE (USER_ID INT, USER_ROLE VARCHAR(25));

INSERT INTO #T_ROLE
VALUES (1, 'ROLE_1');

INSERT INTO #T_ROLE
VALUES (1, 'ROLE_2');

SELECT a.USER_ID,b.USER_ROLE,a.USER_NAME
FROM #T_USER a
FULL JOIN #T_ROLE b ON a.USER_ID = b.USER_ID

DROP TABLE #T_USER,#T_ROLE

 

forwy
forwy
回复 @forwy : 正解
不知道你想干嘛
不知道你想干嘛
回复 @forwy : 用left join ,right join + union all试下https://www.cnblogs.com/ghjbk/p/6681469.html
forwy
forwy
MySQL不支持 full join
0
AbeJeffrey
AbeJeffrey

能正经点么?拿错误脚本就能骗人么

0
y
yqhwd

left outer join

0
爱你_小子
爱你_小子

SELECT
    t1.USER_ID,
    t2.USER_ROLE,
    t1.USER_NAME
FROM
    t_user t1
LEFT OUTER JOIN t_role t2 ON t1.USER_ID = t2.USER_ID

爱你_小子
爱你_小子
其实就是left join
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部