我有一个使用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
失败了。
在查询中使用( )
时,我错过了什么以及为什么会失败?
答案 0 :(得分:4)
尝试执行此查询,
SELECT *
FROM
(
SELECT * FROM Table1
EXCEPT
SELECT * FROM Table2
) a
UNION ALL
SELECT *
FROM
(
SELECT * FROM Table2
EXCEPT
SELECT * FROM Table1
) b