首页 热点资讯 义务教育 高等教育 出国留学 考研考公
您的当前位置:首页正文

Mysql下SELECT的结果集作为UPDATE的WHERE条件时的SQL语法

2023-11-12 来源:花图问答

UPDATE `WarningSendMail` AS alias_1 INNER JOIN (SELECT * FROM `WarningSendMail` WHERE flag=1 AND topic_id LIKE "%2267%") AS alias_2 SET alias_1.topic_id = REPLACE(alias_1.topic_id,‘|2267‘,‘‘) WHERE alias_1.id = alias_2.idupdate WarningSendMail set topic_id= REPLACE(topic_id,‘|2267‘,‘‘) WHERE id IN ( SELECT id FROM WarningSendMail WHERE flag=1 AND topic_id LIKE "%2267%" );

Mysql下SELECT的结果集作为UPDATE的WHERE条件时的SQL语法

标签:select   set   sel   mail   warnings   and   end   highlight   条件   

小编还为您整理了以下内容,可能对您也有帮助:

在sql中将查出来的值作为存储过程的where条件

如果你确定查出来的只有一个结果,你可以select tjnr into 变量名 from ....

把结果放到变量里,然后在后面引用

如果有很多结果,可以用游标

SQL数据库常用命令及语法举例

下面是一些常用的SQL语句,虽然很基础,可是却很值得收藏,对于初学者非常实用

SQL常用命令使用方法:

    (1) 数据记录筛选:

    sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]"

    sql="select * from 数据表 where 字段名 like '%字段值%' order by 字段名 [desc]"

    sql="select top 10 * from 数据表 where 字段名 order by 字段名 [desc]"

    sql="select * from 数据表 where 字段名 in ('值1','值2','值3')"

    sql="select * from 数据表 where 字段名 between 值1 and 值2"

    (2) 更新数据记录:

    sql="update 数据表 set 字段名=字段值 where 条件表达式"

    sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式"

    (3) 删除数据记录:

    sql="delete from 数据表 where 条件表达式"

    sql="delete from 数据表"  (将数据表所有记录删除)

    (4) 添加数据记录:

    sql="insert into 数据表 (字段1,字段2,字段3 …) values (值1,值2,值3 …)"

    sql="insert into 目标数据表 select * from 源数据表"  (把源数据表的记录添加到目标数据表)

    (5) 数据记录统计函数:

    AVG(字段名) 得出一个表格栏平均值

    COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计

    MAX(字段名) 取得一个表格栏最大的值

    MIN(字段名) 取得一个表格栏最小的值

    SUM(字段名) 把数据栏的值相加

    引用以上函数的方法:

    sql="select sum(字段名) as 别名 from 数据表 where 条件表达式"

    set rs=conn.excute(sql)

    用 rs("别名") 获取统的计值,其它函数运用同上。

    (5) 数据表的建立和删除:

    CREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… )

    例:CREATE TABLE tab01(name varchar(50),datetime default now())

    DROP TABLE 数据表名称 (永久性删除一个数据表)

    4. 记录集对象的方法:

    rs.movenext              将记录指针从当前的位置向下移一行

    rs.moveprevious          将记录指针从当前的位置向上移一行

    rs.movefirst             将记录指针移到数据表第一行

    rs.movelast              将记录指针移到数据表最后一行

    rs.absoluteposition=N    将记录指针移到数据表第N行

    rs.absolutepage=N        将记录指针移到第N页的第一行

    rs.pagesize=N            设置每页为N条记录

    rs.pagecount             根据 pagesize 的设置返回总页数

    rs.recordcount           返回记录总数

    rs.bof                   返回记录指针是否超出数据表首端,true表示是,false为否

    rs.eof                   返回记录指针是否超出数据表末端,true表示是,false为否

    rs.delete                删除当前记录,但记录指针不会向下移动

    rs.addnew                添加记录到数据表末端

    rs.update                更新数据表记录

参考资料

SQL常用命令.csdn[引用时间2017-12-30]

SQL数据库常用命令及语法举例

下面是一些常用的SQL语句,虽然很基础,可是却很值得收藏,对于初学者非常实用

SQL常用命令使用方法:

    (1) 数据记录筛选:

    sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]"

    sql="select * from 数据表 where 字段名 like '%字段值%' order by 字段名 [desc]"

    sql="select top 10 * from 数据表 where 字段名 order by 字段名 [desc]"

    sql="select * from 数据表 where 字段名 in ('值1','值2','值3')"

    sql="select * from 数据表 where 字段名 between 值1 and 值2"

    (2) 更新数据记录:

    sql="update 数据表 set 字段名=字段值 where 条件表达式"

    sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式"

    (3) 删除数据记录:

    sql="delete from 数据表 where 条件表达式"

    sql="delete from 数据表"  (将数据表所有记录删除)

    (4) 添加数据记录:

    sql="insert into 数据表 (字段1,字段2,字段3 …) values (值1,值2,值3 …)"

    sql="insert into 目标数据表 select * from 源数据表"  (把源数据表的记录添加到目标数据表)

    (5) 数据记录统计函数:

    AVG(字段名) 得出一个表格栏平均值

    COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计

    MAX(字段名) 取得一个表格栏最大的值

    MIN(字段名) 取得一个表格栏最小的值

    SUM(字段名) 把数据栏的值相加

    引用以上函数的方法:

    sql="select sum(字段名) as 别名 from 数据表 where 条件表达式"

    set rs=conn.excute(sql)

    用 rs("别名") 获取统的计值,其它函数运用同上。

    (5) 数据表的建立和删除:

    CREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… )

    例:CREATE TABLE tab01(name varchar(50),datetime default now())

    DROP TABLE 数据表名称 (永久性删除一个数据表)

    4. 记录集对象的方法:

    rs.movenext              将记录指针从当前的位置向下移一行

    rs.moveprevious          将记录指针从当前的位置向上移一行

    rs.movefirst             将记录指针移到数据表第一行

    rs.movelast              将记录指针移到数据表最后一行

    rs.absoluteposition=N    将记录指针移到数据表第N行

    rs.absolutepage=N        将记录指针移到第N页的第一行

    rs.pagesize=N            设置每页为N条记录

    rs.pagecount             根据 pagesize 的设置返回总页数

    rs.recordcount           返回记录总数

    rs.bof                   返回记录指针是否超出数据表首端,true表示是,false为否

    rs.eof                   返回记录指针是否超出数据表末端,true表示是,false为否

    rs.delete                删除当前记录,但记录指针不会向下移动

    rs.addnew                添加记录到数据表末端

    rs.update                更新数据表记录

参考资料

SQL常用命令.csdn[引用时间2017-12-30]

mysql update 不能用select 作为条件吗

sql server中,我们可是使用以下update语句对表进行更新:
update a set a.xx= (select yy from b) ;
但是在mysql中,不能直接使用set select的结果,必须使用inner join:
update a inner join (select yy from b) c set a.xx = c.yy

例:
update mb_tariff a inner join
mb_tariff_temp b set a.payment = b.payment
where a.mybus_id = b.mybus_id
and a.tariff_id = b.tariff_id

自行示例:
UPDATE USER INNER JOIN (SELECT id,account FROM USER) c SET user.phone=c.account WHERE user.id = c.id

mysql update 不能用select 作为条件吗

sql server中,我们可是使用以下update语句对表进行更新:
update a set a.xx= (select yy from b) ;
但是在mysql中,不能直接使用set select的结果,必须使用inner join:
update a inner join (select yy from b) c set a.xx = c.yy

例:
update mb_tariff a inner join
mb_tariff_temp b set a.payment = b.payment
where a.mybus_id = b.mybus_id
and a.tariff_id = b.tariff_id

自行示例:
UPDATE USER INNER JOIN (SELECT id,account FROM USER) c SET user.phone=c.account WHERE user.id = c.id

SQL 中UPDATE用法

Update是一个数据库SQL语法用语,用途是更新表中原有数据,单独使用时使用where匹配字段。

语法为:UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

例如:Update table_name Set column_name = new_value Where column_name = some_value

扩展资料

update使用注意事项:

1、sp_updatestats可以更新统计信息到最新。

2、低内存会导致未被客户端连接的查询计划被清除。

3、修改表结构,修改索引后,查询计划会被清除,可以再修改后运行几遍查询。

4、使用update时候,order by 会影响查询速度,where中使用函数则会调用筛选器进行扫描,扫描表要尽量避免。

参考资料来源:百度百科—update

update set from where语句的含义,以及这块sql语句的含义

SELECT zcbh,bmbh,sum( rks ) as rks

FROM YX_ZCRK INNER JOIN YX_ZCRKMX ON YX_ZCRK.ID = YX_ZCRKMX.djbh

WHERE YX_ZCRK.ID = [接收ID]

GROUP BY zcbh ,bmbh

把表YX_ZCRK的ID和YX_ZCRKMX的djbh一样的的数据关联

当YX_ZCRK中的ID 为[接收ID]

按照 zcbh,bmbh分组汇总rks

INSERT INTO temp_ZCRK (zcbh,bmbh,rks )--给表temp_ZCRK的zcbh,bmbh,rks 插入值

显示全文