mysql 通过判断表A的name是否包含于表B的name,将表B的id赋值给表A的b_id
时间: 2024-02-27 18:57:43 浏览: 60
可以使用如下的 SQL 语句来实现:
```
UPDATE table_a a
INNER JOIN table_b b ON INSTR(b.name, a.name) > 0
SET a.b_id = b.id;
```
其中,`INSTR` 函数用于判断字符串是否包含另一个字符串,如果包含,则返回对应的位置,否则返回 0。`INNER JOIN` 用于连接两张表,`SET` 语句用于更新表 A 的 b_id 字段。
相关问题
MySQL中表1有id和name,当表2的id等于表1的id时,将表2的name赋值给表1的name
可以使用如下的SQL语句实现:
```
UPDATE table1 t1
JOIN table2 t2 ON t1.id = t2.id
SET t1.name = t2.name;
```
这条语句使用了MySQL的UPDATE JOIN语法,将表1和表2连接起来,然后将表2的name字段的值赋给表1的name字段。注意,使用这条语句前需要确保表2中的每个id都能在表1中找到对应的记录。
mysql定义一个用户变量@name, @id,其中@name赋值“张玲珑”,并使用该变量查询张玲珑的学号,赋值于@id,再显示@id的内容;
在MySQL中,你可以使用`SET`语句来定义用户变量,并通过SQL查询来更新它们。首先,你需要定义变量`@name`和`@id`,然后设置`@name`的值为"张玲珑",接着执行一条动态SQL查询来获取对应名字的学号,并将结果保存到`@id`中。假设有一个名为`students`的表,其中有`username`和`student_id`字段,可以这样做:
```sql
DELIMITER //
CREATE PROCEDURE GetStudentID()
BEGIN
SET @name = '张玲珑';
SET @sql = CONCAT('SELECT student_id FROM students WHERE username = ''', @name, '''');
PREPARE stmt FROM @sql;
EXECUTE stmt INTO @id;
DEALLOCATE PREPARE stmt;
SELECT @id; -- 显示@id的内容
END //
DELIMITER ;
```
要运行这个存储过程,只需调用它:
```sql
CALL GetStudentID();
```
请注意,在实际生产环境中,为了避免SQL注入攻击,你应该使用参数化查询或其他安全的方式来构造动态SQL。
阅读全文