Ошибка «Дублирующее имя столбца», которая не должна существовать - PullRequest
0 голосов
/ 14 января 2019

Я пытаюсь перенести базу данных из sqlite в mariaDB (с которой я никогда не работал), и я не могу решить эту проблему!

Когда я пытаюсь запустить это, я всегда получаю

"#1060 - Duplicate column name 'id_document'"

Вот запрос:

SELECT
  a.id_document AS id_document,
  id_user_associatedDoc,
  id_user_creator,
  stage,
  title,
  goldStandardAnnotationManual,
  count(content) AS answer_count
FROM
  (SELECT * 
  FROM Document join DocumentProject 
  ON Document.id_document = DocumentProject.id_document 
  WHERE DocumentProject.id_project = 2) a
  LEFT JOIN
  (SELECT * 
  FROM Annotation 
  WHERE Annotation.id_project = 2) b 
  ON a.id_document = b.id_document
GROUP BY a.id_document;

Я не понимаю, почему я должен получить эту ошибку! Вы можете помочь?

1 Ответ

0 голосов
/ 15 января 2019

Этот первый синтаксис подзапроса возвращает два столбца id_document:

(SELECT *
 FROM Document
   join DocumentProject
   ON Document.id_document = DocumentProject.id_document
 WHERE DocumentProject.id_project = 2) a

Быстрый способ исправить это:

SELECT
  a.id_doc /*Change this column as following*/ AS id_document,
  id_user_associatedDoc,
  id_user_creator,
  stage,
  title,
  goldStandardAnnotationManual,
  count(content) AS answer_count
FROM
  (SELECT *, Document.id_document as "id_doc" /*define the first id_document column as a different name*/
  FROM Document
    join DocumentProject 
    ON Document.id_document = DocumentProject.id_document 
  WHERE DocumentProject.id_project = 2) a
  LEFT JOIN
  (SELECT * 
  FROM Annotation 
  WHERE Annotation.id_project = 2) b 
    ON a.id_document = b.id_document
GROUP BY a.id_document;

Вы также можете заранее определить, какой столбец вы хотите вернуть внутри подзапроса. Пример:

(SELECT Document.id_document, Document.column_2, Document.column_3
 FROM Document
   join DocumentProject
   ON Document.id_document = DocumentProject.id_document 
 WHERE DocumentProject.id_project = 2) a

Таким образом, ваш внешний запрос должен выбрать a.id_document в соответствии с тем, что вы предварительно определили внутри подзапроса, и не нужно ничего менять из внешнего запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...