Проблемы с запросом SELECT...WHERE

имеется такая схема

create table "Messenger".public.group
(
    id       serial primary key,
    name     varchar(32) unique not null,
    password varchar(128)       not null
);

заполнено следующими значениями

6,main,1234
7,new life,1234
8,lions,1234

когда запрашиваю данные в Qt таким кодом, то получаю все пароли

QSqlQuery query(conn);
query.exec("select * from \"Messenger\".public.group");
while (query.next()) {
   qDebug() << query.value("password").toString();
}

но когда хочу получить пароль определенной группы, запрос выдает ничего

QSqlQuery query(conn);
query.exec("select * from \"Messenger\".public.group where name = 'main'");
while (query.next()) {
    qDebug() << query.value("password").toString();
}

кто знает как пофиксить запрос с where?


Ответы (1 шт):

Автор решения: deelayka

name в PostgreSQL это зарезервированное кодовое слово и чтобы использовать в качестве имени столбца его необходимо заключить в двойные кавычки:

QSqlQuery query(conn);
query.exec("select * from \"Messenger\".public.group where \"name\" = 'main'");
while (query.next()) {
    qDebug() << query.value("password").toString();
}
→ Ссылка