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

Неизвестна колона в списъка с полета при използване на SUM(нещо) AS a

Не можете да изберете колона, която сте дефинирали на същото ниво във вашия SELECT клауза. Ако искате да използвате повторно израз, трябва да прибегнете до използването на производна таблица:

SELECT x.*, (common_p_count+common_r_count)
FROM (
  SELECT 
    a.user AS a_user, 
    b.user AS b_user, 
    SUM(a.post = b.post) AS common_p_count,
    SUM(a.option = b.option) AS common_r_count
  FROM response a, response b
  WHERE a.user = '1' AND b.user != '1' group by b.user
) x

Или, разбира се, просто повтаряте израза:

SELECT 
  a.user AS a_user, 
  b.user AS b_user, 
  SUM(a.post = b.post) AS common_p_count,
  SUM(a.option = b.option) AS common_r_count,
  (SUM(a.post = b.post) + SUM(a.option = b.option))
FROM response a, response b
WHERE a.user = '1' AND b.user != '1' group by b.user

Ако просто искате да подредите по този израз, тогава това е възможно без никакви трикове (но все още не можете да SELECT изразът на същото ниво на вашата заявка)

SELECT 
  a.user AS a_user, 
  b.user AS b_user, 
  SUM(a.post = b.post) AS common_p_count,
  SUM(a.option = b.option) AS common_r_count
FROM response a, response b
WHERE a.user = '1' AND b.user != '1' group by b.user
ORDER BY common_p_count + common_r_count

Причината за това е обяснена в тази статия в блога тук

Странична бележка

Освен горните обяснения, разбира се, не смятам, че вашето запитване е правилно. Тъй като групирате само по b.user , ще получите произволна стойност за a.user и вероятно сумите ви са неверни, както и получавате случайно декартово произведение, според мен. Но това е тема за друг въпрос.




  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 заявка, за да получите необходимия резултат

  2. Как да получа първичен ключ на таблицата?

  3. Резултати от подзаявка за умножаване на MySQL

  4. Как да напиша критерии за хибернация за тази sql заявка?

  5. Групово вмъкване с mysql2 и NodeJs хвърля 500