sqldatareader中的括号

sqldatareader中的括号

我有一个使用SQLLite的数据库,并且正在使用C#。我可以执行查询,但是可以,但是当查询包含( )时,查询将失败,并给出有关SQL语法的专有名词。

我创建了一个函数,该函数可以帮助我使用SQLiteDataReader进行查询

    public SQLiteDataReader SQLExecuteReader(string sqlStatement, SQLiteConnection sqliteConnection)
    {
        SQLiteCommand command = new SQLiteCommand(sqlStatement, sqliteConnection);
        return command.ExecuteReader();
    }


我用这种方式:

SQLiteDataReader reader = SQLExecuteReader("--SQL QUERY--", sqliteConnection);


就我而言,我使用查询来比较两个具有相同结构的表。
当查询为:

SELECT * FROM Table1 EXCEPT SELECT * FROM Table2


有用。

但是当查询是

(   SELECT * FROM table1
    EXCEPT
    SELECT * FROM table2)
UNION ALL
(   SELECT * FROM table2
    EXCEPT
    SELECT * FROM table1)


要么

(SELECT * FROM Table1 EXCEPT SELECT * FROM Table2


它失败。

我缺少什么?为什么在查询中使用( )时失败?

最佳答案

尝试执行此查询,

SELECT *
FROM
(
    SELECT * FROM Table1
    EXCEPT
    SELECT * FROM Table2
) a
UNION ALL
SELECT *
FROM
(
    SELECT * FROM Table2
    EXCEPT
    SELECT * FROM Table1
) b

关于c# - sqldatareader中的括号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15043740/

10-10 22:53