mysql/php:在字符串中查找起始字符串

Fra*_*sco 6 php mysql

我在mysql表中有一个项目列表(Brand + productModel),我在另一个表中有一个Brands列表.

例:

table_items

|id| name             | brand_id  |
-----------------------------------
| 1| Apple Mac 15     |           
| 2| Dell Laptop NXY  | 
| 3| HP Tablet 15     |
| 4| Apple Laptop AA  | 
| 5| Dell Tablet VV   | 
| 6| HP Desktop  XYZ  |
Run Code Online (Sandbox Code Playgroud)

table_brands

|id| name  | 
------------
| 1| Apple | 
| 2| Dell  | 
| 3| HP    |
Run Code Online (Sandbox Code Playgroud)

我继承table_items了之前的项目,所以我需要检测品牌名称table_items,如果品牌存在,那么将品牌ID添加到商品列brand_id(当前为空)

所以理想的输出就是

|id| name             | brand_id  |
-----------------------------------
| 1| Apple Mac 15     | 1   
| 2| Dell Laptop NXY  | 2
| 3| Dell Tablet 15   | 2
| 4| Apple Laptop AA  | 1
| 5| HP Tablet VV     | 3
| 6| HP Desktop  XYZ  | 3
Run Code Online (Sandbox Code Playgroud)

所以我不知道我是否应该使用PHP或者可以直接在MySQL中完成...如果PHP如何检测匹配的字符串?

kam*_*pal 7

您可以使用like加入两个表,并根据需要进行更新.

UPDATE `table_items` TI 
INNER JOIN table_brands TB 
    ON TI.name LIKE CONCAT(TB.name, '%')
SET TI.brand_id = TB.id
Run Code Online (Sandbox Code Playgroud)

注意:INNER JOIN只会更新匹配的字段.


小智 1

you can use the query in mysql like

SELECT id FROM TABLE_BRANDS WHERE name like "Dell%";
Run Code Online (Sandbox Code Playgroud)