大家好,我有一个问题,现在我想用一个update的SQL语句,在update的where条件里,我用了select语句,原句是这样的:String strSql = "update BATCH set status = 'oldStatus' where id = ( select id from BATCH where status = 'newStatus' order by id limit 1)";现在的问题就是,我无法取得当前update的那个Batch的ID。我不想把update和select分开写,因为涉及到一些synchronized的问题,我想同时执行update和select.有哪位大侠知道怎么样能把ID给找到吗?谢谢给位了
update BATCH set status = 'oldStatus' where id = ( select id from BATCH where status = 'newStatus' order by id limit 1这个id应该是从页面上传进来的呀?
例如页面上有个列表,点中某条数据,把数据id传进来。update BATCH set status = 'oldStatus' where id =@id
String strSql = "update BATCH set status = 'oldStatus' where id = ( select id from BATCH where status = 'newStatus' order by id limit 1)";注意下id是否能够从order by id limit 1取出来~limit @id 在Mysql中是分页的意思~
自己把自己绕进去了吧,很简单就能解决问题写个子查询干嘛;
SQL解析器分析你的sql语句的时候,并不会因为你写了limit 1就判断出你的结果集只有一条数据。
select的结果是一个集合,所以你应该用in来判断。
我觉得还是不要用复杂的sql语句吧!有简单的就多些几句实现功能就得了!