3

SQLLite を使用する DB があり、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);

私の場合、クエリを使用して、同じ構造を持つ 2 つのテーブルを比較しています。クエリが次の場合:

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

失敗します。

不足しているものと( )、クエリで使用すると失敗するのはなぜですか?

4

1 に答える 1

4

このクエリを実行しようとすると、

SELECT *
FROM 
(
    SELECT * FROM Table1 
    EXCEPT 
    SELECT * FROM Table2
) a
UNION ALL 
SELECT *
FROM
(
    SELECT * FROM Table2 
    EXCEPT 
    SELECT * FROM Table1
) b
于 2013-02-23T18:04:51.613 に答える