Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cột không xác định trong danh sách trường khi sử dụng SUM (cái gì đó) AS a

Bạn không thể chọn một cột mà bạn đã xác định ở cùng một cấp trong SELECT của mình mệnh đề. Nếu bạn muốn sử dụng lại một biểu thức, bạn phải sử dụng bảng dẫn xuất:

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

Hoặc, tất nhiên, bạn chỉ cần lặp lại biểu thức:

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

Nếu bạn chỉ muốn đặt hàng theo biểu thức đó thì có thể thực hiện được mà không cần bất kỳ thủ thuật nào (nhưng bạn vẫn không thể SELECT biểu thức ở cùng cấp độ truy vấn của bạn)

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

Lý do cho điều này được giải thích trong bài viết blog này ở đây

Ghi chú bên lề

Tất nhiên, ngoài những giải thích ở trên, tôi không nghĩ rằng truy vấn của bạn là đúng. Vì bạn chỉ nhóm theo b.user , bạn sẽ nhận được một giá trị ngẫu nhiên cho a.user và có thể số tiền của bạn không chính xác cũng như bạn nhận được một sản phẩm xe đẩy tình cờ, theo ý kiến ​​của tôi. Nhưng đó là một chủ đề cho một câu hỏi khác.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để giải quyết lớp Dialect không tìm thấy:org.hibernate.dialect.MYSQLDialect Exception?

  2. Lỗi Core Entity Framework:Đã xảy ra lỗi khi sử dụng kết nối với cơ sở dữ liệu '' trên máy chủ 'localhost'

  3. làm thế nào để chuyển đổi thời gian varchar kỳ lạ thành thời gian thực trong mysql?

  4. Truy vấn mysql đồng bộ node.js

  5. Tôi có thể kết hợp các API MySQL trong PHP không?