MySQL 选择位置/喜欢



我需要有关选择语句中的 WHERE/LIKE 子句的帮助。我希望它从表1.结果中返回值,其中/类似表2.选择列包含表1.数据列中的所有字符。

如果选择列包含字符"abc",数据列包含"bc",则它可能匹配。如果选择列有"abc",数据列有"abcd",那么它就不是匹配的,因为选择列缺少"d"。

我尝试了不同的运算符和正则表达式,但无法弄清楚。

表1:

wdt_id | data | results
1 | abcd | Mazda
2 | abde | Toyota
3 | ace | Honda

表2:

wdt_id | selection | selection_results
1 | abde | null
2 | abcd | null
3 | ab | null

陈述:

SELECT results
FROM table1
WHERE table1.data LIKE concat(‘%’,table2.selection,'%');

编辑: 我在上面添加了一些数据。select 语句是大型 UPDATE 触发器的一部分。触发器更新selection_results列。 根据上述数据,row1 的选择结果将是丰田。

使用您的几个示例数据,它应该看起来像

由于这可能具有多个结果,因此您是SELECT nees a LIMIT 1和ORDER BY,您必须检查

CREATE TABLE Tab1 (wdt_id int, data varchar(10), results vARCHAR(20))
INSERT INTO Tab1
(`wdt_id`, `data`, `results`)
VALUES
('1', 'abcd', 'Mazda'),
('2', 'abde', 'Toyota'),
('3', 'ace', 'Honda');
CREATE TABLE Tab2 (wdt_id int , selection varchar(20),selection_results varchar(20))
INSERT INTO Tab2
(`wdt_id`, `selection`, `selection_results`)
VALUES
('1', 'abde', null),
('2', 'abcd', null),
('3', 'ab', null);
SELECT results FROM Tab1 WHERE EXISTS ( SELECT 1 FROM Tab2 WHERE selection LIKE CONCAT('%', Tab1.data , '%'))
|
结果 | |:------ | |马自达 | |丰田 |
UPDATE Tab2 SET `selection_results`  = (SELECT results FROM Tab1 WHERE  Tab2.selection LIKE CONCAT('%', Tab1.data , '%') ORDER BY wdt_id LIMIT 1)
SELECT * FROM Tab2
wdt_id | 选择 | selection_results -----: |:-------- |:----------------  1 |阿布德 |丰田            2 |美国广播公司 |马自达             3 |AB |

db<>小提琴在这里

相关内容

  • 没有找到相关文章

最新更新