Я пытаюсь запустить SQLite Query в моей программе на C++, которая удаляет все повторяющиеся записи в одной из моих таблиц базы данных. Однако я продолжаю сталкиваться с различным синтаксисом . ошибкиОшибка SQL: синтаксис Near "(": синтаксическая ошибка (интерфейс C++)
Вот мой SQL таблицы:
Table Name: spamtrigrams
ID TRIGRAM
---------- ----------
1 Sam's nice ham
2 Tuesday was cold
3 Alex stood up
4 Mark passed out
5 this database is
6 date with a
7 disco stew pot
++10000
Вот мой C++ код:
sql = "DELETE from spamtrigrams WHERE id in(" \
"SELECT id from spamtrigrams" \
"EXCEPT(SELECT min(id);" \
"from spamtrigrams," \
"group by TRIGRAM," \
"having count(1) > 1," \
"union all," \
"SELECT min(id)," \
"from spamtrigrams," \
"group by TRIGRAM," \
"having count(1) = 1));";
ret = sqlite3_exec(db, sql.c_str(), NULL, 0, &zErrMsg);
if (ret != SQLITE_OK) {
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}
else {
fprintf(stdout, "Duplicates Deleted\n");
ли кто-нибудь сможет сказать мне, почему эта ошибка возникает
?Спасибо.
Вы знаете, что в '' '' '' отсутствует '' '. Это не ваша ошибка: просто опечатка. – Bathsheba
Серьезно? Хотите, чтобы мы подсчитали скобки для вас? – Paranaix
Число скобок, похоже, соответствует, но я думаю, что есть много запятых. Может быть, SQLite отличается, но IIRC, обычно нет запятой до FROM, GROUP или HAVING. О, и ";" после третьей строки, безусловно, неправильно. – PMF