這個超級難的MySQL語句該怎么寫呢

這個超級難的MySQL語句該如何寫呢?

與下面Sybase等價的MySQL語句該怎麼寫啊?

  update q_templet 

  set p_id = null 

  where test_id in

  (

  SELECT test_id FROM q_templet WHERE e_hold_dt <= ‘2007-11-21’ and templet_status = 1

  )

MySQl不支持這種語句,請求各位高手幫忙解決,急啊!

另外,我為了防止紀錄太多,in()超過長度,所以嘗試用零時表,結果這條Mysql語句又執行不了,郁悶!

create table q_templet_temp (id int);

 insert into q_templet_temp values

 (

  SELECT test_id FROM q_templet WHERE e_hold_dt <= ‘2007-11-21’ and templet_status = 1

 )

這又是如何,感覺Mysql用起來有點不利索啊….


SQL code


    create temporary table tmp select * from q_templet;
    update   q_templet, tmp
    set   q_templet.p_id   =   null  
    where   q_templet.test_id   in
    (
        SELECT   tmp.test_id   FROM   tmp   WHERE   tmp.e_hold_dt   <=   '2007-11-21 '   and   tmp.templet_status   =   1
    )


update q_templet
set p_id = null
where test_id in 

SELECT test_id FROM q_templet WHERE e_hold_dt <= '2007-11-21' and templet_status = 1 

MYSQL可以执行啊 。版本低了吧 ?

这人发了帖子就跑了 :(

update q_templet
set p_id = null
where test_id in
(
SELECT test_id FROM q_templet WHERE e_hold_dt <= '2007-11-21' and templet_status = 1

看你的这条SQL真晕啊,update和子查询都是同一个表q_templet的,那干嘛还要写成这样,直接这样:
update q_templet
set p_id = null
WHERE e_hold_dt <= '2007-11-21' and templet_status = 1

如果是要多表更新,看我发过的帖子,里面我提到了三个方法,你都试试
http://topic.csdn.net/u/20071218/11/69071e9f-085d-4087-890c-c9880cc963ec.html
推荐三个中的第一个
這個超級難的MySQL語句該怎么寫呢

相关文章:

你感兴趣的文章:

标签云: