CREATE TABLE s AS
SELECT * FROM test
WHERE rowid IN
(SELECT head_rowid FROM chained_rows
WHERE table_name = 'test');  select * from s; 以上两个语句是为了 清除行迁移(已经经过分析后test表有三条记录行迁移) 时,将test 表中的发生行迁移记录导入到s 表中,但是发现: 0 rows selected.很自然,后面得语句:
DELETE test
WHERE rowid IN
(SELECT head_rowid
FROM chained_rows
WHERE table_name = 'test');INSERT INTO table_name SELECT * FROM s;也都是0行。请教高手,是怎么回事??

解决方案 »

  1.   

    test 用大写试试CREATE TABLE s AS 
    SELECT * FROM test 
    WHERE rowid IN 
    (SELECT head_rowid FROM chained_rows 
    WHERE table_name = 'TEST'); 
      

  2.   

    太棒了,谢谢zc1_1.
    在请教一下:
    DELETE test 
    WHERE rowid IN 
    (SELECT head_rowid 
    FROM chained_rows 
    WHERE table_name = 'test':是不是应该作如下的修改:
    DELETE  from test 
    WHERE rowid IN 
    (SELECT head_rowid 
    FROM chained_rows 
    WHERE table_name = 'TEST';我是说第一句掉了from;
    是吗
      

  3.   

    上面的问题已经解决了:
    又有新问题:
    当我输出:
    DELETE test
    WHERE rowid IN
    (SELECT head_rowid
    FROM chained_rows
    WHERE table_name = 'TEST');显示:3 rows deleted然后,我马上去分析行连:
    Analyze table test list chained rows;Select table_name head_rowid from chained_rows;怎么以前的行连记录还存在:总共有二十多个,怎么回事??????
    好像并没清除行迁移??
    等待高手!!!!
      

  4.   

    你应该清空表chained_rows再重新分析