Mysql
 sql >> база данни >  >> RDS >> Mysql

Грешка с дублирана колона на MySQL само когато заявката е обвита като подзаявка

Причината да получите грешката е поради псевдонима AS X . Но проблемът наистина е, че сте използвали * , вместо да изброявате полетата, които искате.

В първата заявка SELECT * всъщност произвежда полета като:

A.id, A.name, A.description, B.id, B.name, B.date_started, C.id, C.name, C.isDeleted

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

Когато обаче преместите заявката си в подзаявка и псевдоним на резултатите AS X , след което ще получите:

X.id, X.name, X.description, X.id, X.name, X.date_started, X.id, X.name, X.isDeleted

Сега можете да видите защо се оплаква. Можете да видите защо е лошо да използвате * , тъй като тази комбинация може да работи за известен период от време и след това добавяте ново поле към съществуваща таблица, което е същото като друга таблица, и бам, всяка заявка, която сте написали с двете от тези таблици, сега трябва да бъде пренаписано.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Грешка в синтаксиса на MySQL Десен синтаксис за използване близо до 'desc

  2. Моето приложение spring+hibernate не затваря jdbc връзки

  3. MySQL:Актуализирайте заявката с помощта на If else

  4. завъртете в цикъл mysql заявка

  5. Как мога да сортирам id и sub_id в низходящ ред?