有没有办法在 mysql 中对两个表中的不同列执行多次查找?



>我有一个表格 1,如下所示(简化版本显示在这里,因为实际版本有超过 60+ 列)

参数A001
ID 说明 From_Index_Code To_Index_Code 成本1参数2
一个 东西。B001500ABC.xyz。
B 某事2. B001. C001 1000 ABC. xyz。

您的问题是,您在子选择中选择id,因此MySQL选择错误,在ids列中添加s可以清除所有内容并获得正确的结果

CREATE TABLE table1
(`id` varchar(1), `Description` varchar(11), `From_Index_Code` varchar(5), `To_Index_Code` varchar(4), `Cost` int, `PARAM1` varchar(4), `PARAM2` varchar(4))
;

INSERT INTO table1
(`id`, `Description`, `From_Index_Code`, `To_Index_Code`, `Cost`, `PARAM1`, `PARAM2`)
VALUES
('A', 'Something.', 'A001', 'B001', 500, 'abc.', 'xyz.'),
('B', 'Something2.', 'B001.', 'C001', 1000, 'abc.', 'xyz.')
;
CREATE TABLE table2
(`id` int, `Code` varchar(4), `Value` int)
;

INSERT INTO table2
(`id`, `Code`, `Value`)
VALUES
(1, 'A001', 100.),
(2, 'B001', 200.),
(3, 'C001', 300.)
;
WITH
src_1 as (select s.id,s.description,g.value
from table1 s left outer join table2 g on s.from_index_code=g.code),
src_2 as (select s.id,s.description,g.value
from table1 s left outer join table2 g on s.to_index_code=g.code)
select src_1.id, src_1.description,src_1.value as 'from_value',src_2.value as 'to_value' from src_1 ,src_2 where src_1.id=src_2.id
ID | 描述 | from_value | to_value :- |:---------- |---------: |-------: 一 |东西。 |       100 |     200 乙 |某事2.||     300

db<>在这里小提琴

嗯。 . .我想你想要这样的加入和条件:

select t1.*
from table1 t1 join
table2 t2f
on t2f.code = t1.From_Index_Code join
table2 t2t
on t2t.code = t1.to_index_code
where t1.param1 = @param1 and t2.param2 = @param2 and 
@index_value between t2f.value and t2t.value;

为了提高性能,您需要在table1(param1, param2, from_index_code, to_index_code)table2(code)上建立索引(如果它还不是主键)。

最新更新