這個超級難的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用起來有點不利索啊....
------解决方案--------------------
與下面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.****.net/u/20071218/11/69071e9f-085d-4087-890c-c9880cc963ec.html
推荐三个中的第一个