繁体   English   中英

Mysql Union两个具有不同值的表

[英]Mysql Union two tables with different values

我需要从一个表中返回所有值,然后将该表连接到另一个查询中而不重复值。 到目前为止,这是我的查询。

    CREATE TABLE tmp_tbl (Id INT(11) PRIMARY KEY, Per VARCHAR(30), Des VARCHAR(50), Rol INT(11));
INSERT INTO tmp_tbl(Id, Per, Des, Rol)
SELECT DISTINCT
     p.p_id AS Id,
    p.p_title AS Per,
    p.p_description AS Des,
    '' AS Rol
    FROM perm p;

 SELECT  
    p.p_id AS Id,
    p.p_title AS Per,
    p.p_description AS Des,
    r.id AS Rol
    FROM perm p
    LEFT JOIN roles rp
        ON p.p_id = rp.p_id
    INNER JOIN rol r
        ON r.id = rp.r_id AND rp.r_id IN (101)
    UNION  ALL
SELECT * FROM
tmp_tbl;
 DROP TABLE tmp_tbl;

该语句返回第一个选择的所有行,但复制第二个选择语句的并集上的行。

尝试更换

UNION  ALL

UNION

union all将不会删除重复项。

您应该使用UNION ,而不是UNION ALL
实际上, UNION会删除重复的记录(结果中的所有列都相同),而UNION ALL不会。

使用UNION DISTINCT确保:

(SELECT p.p_id AS Id, p.p_title AS Per, p.p_description AS Des, r.id AS Rol
FROM perm p
LEFT JOIN roles rp ON p.p_id = rp.p_id
INNER JOIN rol r ON r.id = rp.r_id AND rp.r_id IN (101))
UNION  DISTINCT
(SELECT * FROM tmp_tbl);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM