與下面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用起來有點不利索啊....
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用起來有點不利索啊....
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
)
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可以执行啊 。版本低了吧 ?
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
推荐三个中的第一个