繁体   English   中英

MySQL组合/合并/多重选择查询

[英]MySQL Combining/Concat/Multiple Select Query

我很头疼,想弄清楚如何创建合适的MySQL查询来检索我需要的信息。 这是我的TABLE PARAM中的示例行:

Serial | Repeater1 | Repeater2 | Repeater3

我想检索不在“串行”字段中的所有Repeater1,Repeater2或Repeater3。 所有这些字段都在同一SAME TABLE下。

对于前:

Serial | Repeater1 | Repeater2 | Repeater3

1234   | 1111      | 2222      | null

1235   | 1111      | null      | null

1236   | 1234      | 1111      | 2222

我的SELECT查询应该只返回:

1111

2222

由于Repeater1中使用的1234以串行方式出现(因此需要避免),即使不同列(在此示例中为Repeater2和Repeater3)下也存在1111或2222,我只想列出DISTINCT Repeater1,Repeater2或Repeater3 NOT IN Serial 。

您有任何想法可以完成此请求吗?

提前很多帮助!

select * from ( 
    select distinct Repeater1 as repeater from table1 where Repeater1 is not null 
    UNION 
    select distinct Repeater2 as repeater from table1 where Repeater2 is not null 
    UNION 
    select distinct Repeater3 as repeater from table1 where Repeater3 is not null 
) as datarepeater 
where datarepeater.repeater not in (select serial from table1) and datarepeater.repeater!=0
select r from (
    select Repeater1 as r from t WHERE Repeater1 IS NOT NULL
    union 
    select Repeater2 as r from t  WHERE Repeater2 IS NOT NULL
    union 
    select Repeater3 as r from t  WHERE Repeater3 IS NOT NULL
) reps
left join t
on reps.r = t.Serial 
WHERE t.Serial IS NULL

暂无
暂无

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

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