values 不支持子查询?

在此上下文中不允许使用子查询。只允许使用标量表达式...

insert into cash(userid)
values((select top 1 userid from aspnet_membership order by createdate desc))
会报错 在此上下文中不允许使用子查询。只允许使用标量表达式...

正确的是

insert into cash(userid)

select (select top 1 userid from aspnet_membership order by createdate desc)

一开始被select 误解

其实就是将values改成select并且把values后面的一对括号去掉就可以

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL 是一个关系型数据库管理系统,它本身并不直接支持递归查询。然而,你可以通过使用递归查询的技巧来实现类似的功能。 在 MySQL 中,你可以使用存储过程或触发器来模拟递归查询。存储过程是一组预定义的 SQL 语句集合,可以在数据库中存储和重复使用。触发器是在特定的数据库操作(如插入、更新或删除)发生时自动触发的一段代码。 以下是一个使用存储过程来模拟递归查询的示例: ```mysql DELIMITER // CREATE PROCEDURE recursive_query(IN start_id INT) BEGIN -- 创建临时表来保存结果 CREATE TEMPORARY TABLE temp_table (id INT); -- 将起始 ID 插入临时表 INSERT INTO temp_table VALUES (start_id); -- 递归查询 REPEAT INSERT INTO temp_table SELECT child_id FROM your_table WHERE parent_id IN (SELECT id FROM temp_table); UNTIL ROW_COUNT() = 0 END REPEAT; -- 从临时表中获取结果 SELECT * FROM temp_table; -- 删除临时表 DROP TEMPORARY TABLE IF EXISTS temp_table; END // DELIMITER ; ``` 上述示例中,`your_table` 是包含父子关系的表,`start_id` 是递归查询的起始 ID。存储过程会创建一个临时表,然后通过循环插入满足条件的子节点,直到没有更多的子节点可插入为止,最后返回临时表中的结果。 请注意,这只是一种模拟递归查询的方法,并不是 MySQL 自带的功能。在实际使用之前,你需要根据自己的数据结构和需求进行适当的调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值