两个表之间的匹配,其中field是另一个的子串

时间:2013-12-09 02:56:06

标签: mysql

嗨(抱歉标题不好),

我在MySQL数据库中有两个表,我们可以调用它们CarMakeCarModel。两个表都有两个字段ID:int(11)Description:varchar(100)。例如:

       CarMake                     CarModel
ID          Description    | ID          Description
-----------------------------------------------------
123456      Honda          | 12345678    Accord
234567      Toyota         | 12345665    Civic
369258      Lexus          | 23456789    Prius

每个汽车型号共享其Make的ID的前6位数字。在这个例子中,Accord和Civic都与本田共享ID的前6位数字,因此它们是本田车型。

现在,我要做的是从CarMake中选择所有行在CarModel中有一条记录,其中ID的前6位数匹配。在这个例子中,我的查询应该从CarMake返回Lexus行,因为它在CarModel中没有匹配的行。

到目前为止,我所尝试过的任何事情都没有达到我想要的效果,所以我在这里发帖。

非常感谢任何帮助!

编辑:在zerkms的帮助下解决

SELECT * FROM CarMake
LEFT JOIN CarModel 
ON CarModel.ID LIKE CONCAT(CarMake.ID, '%')
WHERE CarModel.ID IS NULL;

跟进问题:

  • 此解决方案需要很长时间才能运行,有没有办法提高效率?
  • 删除该查询返回的记录的最佳方法是什么?有没有什么方法可以将它组合到查询本身?

0 个答案:

没有答案