gpt4 book ai didi

MySQL:匹配三个表中的列

转载 作者:行者123 更新时间:2023-11-29 21:50:58 26 4
gpt4 key购买 nike

我有下面三张表。主键是 PK 列。我想获得每个表上的唯一 PK 并根据 PK 填充 NO 列(请参见下面的输出)。我怎样才能使用 MySQL 来做到这一点?抱歉我的问题,我刚刚接触 MySQL,我只知道如何选择那些独特的 PK。

 select U_IMSI from
(select IMSI from table_A
UNION
select IMSI from table_B
UNION
select IMSI from table_C) as UNIQUE_IMSI

表_A

PK     NO  
12345 22222
78912 33333
56892 44444

表_B

 PK     NO
12345 88888
78912 99999
56892 11111

表_C

  PK    NO
12345 NET
78782 SMART
12345 MMS
12345 SMART
56892 MMS
78912 GT

table_C中的注意事项:如果PK有1到3个值,则获取NO值并填充为C1 C2 C3。

输出

 PK     A      C1   C2    C3     B
12345 22222 NET MMS SMART 88888
78912 33333 GT 99999
56892 44444 MMS 11111
78782 SMART

最佳答案

这可能会让您走上正轨。

SELECT pk,
a_no,
c1,
IF(c2 = c1,NULL,c2) c2,
IF(c3 = c2,NULL,c3) c3,
b_no
FROM(
-- Separate the 3 table_C NO values into columns.
SELECT pk, a_no,
SUBSTRING_INDEX(c_no,',',-1) c1,
SUBSTRING_INDEX( SUBSTRING_INDEX(c_no,',',-2),',',1 ) c2,
SUBSTRING_INDEX( SUBSTRING_INDEX(c_no,',',-3),',',1 ) c3,
b_no
FROM (
-- Condense to 1 row per PK, grouping the table_C NO values
SELECT pk,
MAX(a_no) a_no,
MAX(b_no) b_no,
GROUP_CONCAT(DISTINCT c_no) c_no
FROM(
-- Get the full outer join list of pks from:
-- * PKS in table_A, table_B
-- * PKS only in table_C
SELECT a.pk, a.no a_no, b.no b_no, c.no c_no
FROM table_A a
LEFT JOIN table_B b ON (a.pk = b.pk)
LEFT JOIN table_C c ON (a.pk = c.pk)
UNION
SELECT c.pk, null, null, c.no
FROM table_C c
) q
GROUP BY pk
) q
) q
;

关于MySQL:匹配三个表中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33643706/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com