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

Chọn nhiều cột / trường trong truy vấn con MySQL

Có, bạn có thể làm điều này. Sở trường bạn cần là khái niệm rằng có hai cách để lấy bảng ra khỏi máy chủ bảng. Một cách là ..

FROM TABLE A

Cách khác là

FROM (SELECT col as name1, col2 as name2 FROM ...) B

Lưu ý rằng mệnh đề select và các dấu ngoặc đơn xung quanh nó are một bảng, một bảng ảo.

Vì vậy, bằng cách sử dụng ví dụ mã thứ hai của bạn (tôi đoán ở các cột bạn đang hy vọng lấy ở đây):

SELECT a.attr, b.id, b.trans, b.lang
FROM attribute a
JOIN (
 SELECT at.id AS id, at.translation AS trans, at.language AS lang, a.attribute
 FROM attributeTranslation at
) b ON (a.id = b.attribute AND b.lang = 1)

Lưu ý rằng bảng thực của bạn attribute là bảng đầu tiên trong phép nối này và bảng ảo này mà tôi đã gọi là b là bảng thứ hai.

Kỹ thuật này đặc biệt hữu ích khi bảng ảo là một bảng tóm tắt của một số loại. ví dụ:

SELECT a.attr, b.id, b.trans, b.lang, c.langcount
FROM attribute a
JOIN (
 SELECT at.id AS id, at.translation AS trans, at.language AS lang, at.attribute
 FROM attributeTranslation at
) b ON (a.id = b.attribute AND b.lang = 1)
JOIN (
 SELECT count(*) AS langcount,  at.attribute
 FROM attributeTranslation at
 GROUP BY at.attribute
) c ON (a.id = c.attribute)

Hãy xem nó diễn ra như thế nào? Bạn đã tạo một bảng ảo c chứa hai cột, nối nó với hai cột kia, được sử dụng một trong các cột cho ON và trả về mệnh đề kia dưới dạng một cột trong tập kết quả của bạn.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách cài đặt và cấu hình phpMyAdmin trên Debian 8

  2. Di chuyển cơ sở dữ liệu MySQL sang một máy chủ mới

  3. Java PreparedStatement phàn nàn về cú pháp SQL trên execute ()

  4. MySQL - Toán hạng phải chứa 1 (các) cột

  5. Làm cách nào để loại bỏ khoảng cách dòng giữa các dòng trong Textarea?