Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Kolom tidak dikenal dalam daftar bidang saat menggunakan SUM(sesuatu) AS a

Anda tidak dapat memilih kolom yang telah Anda tentukan pada level yang sama di SELECT ayat. Jika Anda ingin menggunakan kembali ekspresi, Anda harus menggunakan tabel turunan:

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

Atau, tentu saja, Anda cukup mengulangi ungkapan:

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

Jika Anda hanya ingin memesan dengan ekspresi itu, maka itu mungkin tanpa trik apa pun (tetapi Anda masih tidak dapat SELECT ekspresi pada tingkat yang sama dari kueri Anda)

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

Alasan untuk ini dijelaskan dalam artikel blog ini di sini

Catatan samping

Terlepas dari penjelasan di atas, tentu saja, menurut saya pertanyaan Anda tidak benar. Karena Anda hanya mengelompokkan berdasarkan b.user , Anda akan mendapatkan nilai acak untuk a.user dan mungkin jumlah Anda salah serta Anda mendapatkan produk kartesius yang tidak disengaja, menurut saya. Tapi itu topik untuk pertanyaan lain.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ap_proxy_connect_backend menonaktifkan pekerja untuk (127.0.0.1)

  2. Fungsi pencadangan MySQL PDO

  3. Mengubah pembatas kueri MySQL melalui C API

  4. Bagaimana cara mengelompokkan berdasarkan minggu di MySQL?

  5. Optimalkan kinerja tulis untuk instans AWS Aurora