MYSQL 设置用于连接表的临时列



我有2个表,称为dataTest和custlist。 我想根据客户列表表中的"vlookref"连接这些表, 但唯一匹配的列是 dataTest 表中的"custacc"。 从 dataTest 表中,可以按区域对区域进行分类 例如,"中部,东部,北部,南部"作为半岛, "哥打京那巴鲁,拿笃,山打根,塔瓦"作为沙巴,以及 其他人作为砂拉越。 如何对此进行存档,以便我可以根据客户列表表中的"vlookref"在内部连接它。感谢

日期测试架构

CREATE TABLE dataTest ( region varchar(50),custacc varchar(50));
INSERT INTO dataTest VALUES ('central','CT0135');
INSERT INTO dataTest VALUES ('eastern','CT0135');
INSERT INTO dataTest VALUES ('southern','CT0135');
INSERT INTO dataTest VALUES ('northern','CT0135');
INSERT INTO dataTest VALUES ('kota kinabalu','CT0135');
INSERT INTO dataTest VALUES ('lahad datu','CT0135');
INSERT INTO dataTest VALUES ('sandakan','CT0135');
INSERT INTO dataTest VALUES ('tawau','CT0135');
INSERT INTO dataTest VALUES ('bintulu','CT0135');
INSERT INTO dataTest VALUES ('kuching','CT0135');
INSERT INTO dataTest VALUES ('sibu','CT0135');

保管列表架构

CREATE TABLE custlist1 ( area varchar(50),vlookref varchar(50),custacc varchar(50),custname varchar(50));
INSERT INTO custlist1 VALUES ('peninsular','peninsular CT0135','CT0135','HP sdn bhd');
INSERT INTO custlist1 VALUES ('sabah','sabah CT0135','CT0135','Hup Trading sdn bhd');
INSERT INTO custlist1 VALUES ('sarawak','sarawak CT0135','CT0135','Master sdn bhd');

以下查询可能会对您有所帮助:

从中选择 Temp.Region、Temp.Custacc、Custlist1.* (

选择不同的数据测试区域,

dataTest.custacc,

(当 (dataTest.region = 'central' 或 dataTest.region = 'eastern' 或 dataTest.region = 'northern' 或 dataTest.region = 'southern' ( 则 concat('peninsular',',dataTest.custacc(

当 (dataTest.region = 'kota kinabalu' 或 dataTest.region = 'lahad datu' 或 dataTest.region = 'sandakan' 或 dataTest.region = 'tawau' ( 则 concat('sabah',',dataTest.custacc(

else concat('砂拉越',',dataTest.custacc( end( vlookrefdata 从 custlist1, dataTest

( temp JOIN custlist1ON temp.vlookrefdata = custlist1.vlookref;

从阅读您的表格来看,它似乎来自 Excel 工作表,您可以在其中进行查找 (vlookup( 的唯一方法是将两列连接在一起。sql 中不是这种情况,您应该像这样简单地加入:

from datatest
join custlist1 on custlist1.area=datatest.region 
and custlist1.custacc=datatest.custacc

您可以使用substring_index使用内部连接条件,

尝试类似的东西

SELECT ct.*, dt.* 
FROM custlist1 ct INNER JOIN dataTest dt 
ON SUBSTRING_INDEX(ct.vlookref,' ',-1) = dt.custacc

SELECT ct.*, dt.* 
FROM custlist1 ct INNER JOIN dataTest dt 
ON ct.custacc = dt.custacc;

试试这个演示

最新更新