【问题标题】:How to write SQLite update operation in two tables?如何在两个表中编写 SQLite 更新操作?
【发布时间】:2010-06-18 03:13:25
【问题描述】:

我正在使用 SQLite,

TABLE A
(
 ID
 FileNAME
 FOLDERID
)

TABLE B
(
 FOLDERID
 FOLDERPATH
)

我想写一条 SQL 语句来删除 A 中的所有文件,它的文件夹是 C:\ABC\ 的子文件夹;

如何在一条 SQLite 语句中实现它,这是最好的方法吗?

非常感谢!

【问题讨论】:

    标签: sql sqlite sql-update


    【解决方案1】:

    以下工作正常:

    create table table_a (
    
       id int,
       file_name varchar(300),
       folder_id int
    );
    
    create table table_b (
     folder_id int,
     folder_path varchar(300)
    );
    
    insert into table_a (id, file_name, folder_id) values (1, 'file1.txt', 1);
    insert into table_a (id, file_name, folder_id) values (1, 'file2.txt', 1);
    insert into table_a (id, file_name, folder_id) values (1, 'file2-1.txt', 2);
    insert into table_b (folder_id, folder_path) values (1, 'c:\abc\somefolder\another');
    insert into table_b (folder_id, folder_path) values (2, 'c:\abcNOT\somefolder\another');
    
    delete
    from table_a
    where folder_id in (select folder_id from table_b where substr(folder_path, 1, 7) = 'c:\abc\');
    
    select * from table_a;
    

    【讨论】:

      【解决方案2】:

      相同的想法,但有一些修改: SQLite 现在可以识别参照完整性了:

      创建表 Table_a ( id int, 文件名 varchar(300), folder_id 整数, FOREIGN KEY(folder_id) REFERENCES Table_b (folder_id) );

      创建表 Table_b ( folder_id 整数, 文件夹路径 varchar(300) );

      CREATE TABLE Table_b (folder_id, folder_path) VALUES (1, 'c:\abc\somefolder\another'); CREATE TABLE Table_b (folder_id, folder_path) VALUES (2, 'c:\abcNOT\somefolder\another'); CREATE TABLE Table_a (id, file_name, folder_id) VALUES (1, 'file1.txt', 1); CREATE TABLE Table_a (id, file_name, folder_id) VALUES (1, 'file2.txt', 1); CREATE TABLE Table_a (id, file_name, folder_id) VALUES (1, 'file2-1.txt', 2);

      删除 从表_a WHERE folder_id IN (SELECT folder_id FROM Table_b WHERE folder_path LIKE 'c:\abc\%');

      SELECT * FROM Table_a;

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-04
        • 2014-01-23
        • 2013-03-16
        • 2018-03-20
        • 1970-01-01
        相关资源
        最近更新 更多