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

Nối kết quả từ một truy vấn vào cùng một hàng kết quả trong PostgreSQL - Redshift

PostgreSQL

SELECT
  a,
  STRING_AGG('(' || c || ',' || b || ')', ' ; ')
FROM
  tbl
GROUP BY
  a;

Chỉnh sửa :Đối với các phiên bản PostgreSQL trước 9.0 (khi STRING_AGG được giới thiệu) và thậm chí trước 8.4 (khi ARRAY_AGG được thêm vào), bạn có thể tạo chức năng tổng hợp tùy chỉnh .

Chỉnh sửa 2 :Đối với các phiên bản trước 8.0 (có lẽ Amazon Redshift dựa trên PostgreSQL 7.4 bằng cách nào đó), cú pháp $$ không được hỗ trợ, vì vậy phần thân hàm cần được đặt trong dấu ngoặc kép và dấu ngoặc kép bên trong phần thân cần phải được thoát ra.

CREATE FUNCTION cut_semicolon(text) RETURNS text AS '
BEGIN
  RETURN SUBSTRING($1 FROM 4);
END;
' LANGUAGE 'plpgsql' IMMUTABLE;


CREATE FUNCTION concat_semicolon(text, text) RETURNS text AS '
BEGIN
  RETURN $1 || '' ; '' || $2;
END;
' LANGUAGE 'plpgsql' IMMUTABLE;

CREATE AGGREGATE concat_semicolon(
  BASETYPE=text,
  SFUNC=concat_semicolon,
  STYPE=text,
  FINALFUNC=cut_semicolon,
  INITCOND=''
);

Sau đó, hãy sử dụng tổng hợp đó để thay thế.

SELECT
  a,
  CONCAT_SEMICOLON('(' || c || ',' || b || ')')
FROM
  tbl
GROUP BY
  a;

MySQL

SELECT
  a,
  GROUP_CONCAT(CONCAT('(', c, ',', b, ')') SEPARATOR ' ; ')
FROM
  tbl
GROUP BY
  a;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy vấn SQL:danh sách tất cả các ID đã hoạt động trong một khoảng thời gian nhất định, được sắp xếp theo thời gian bắt đầu của chúng

  2. Làm thế nào để làm cho mã php kết nối với hai cơ sở dữ liệu khác nhau với hai máy chủ lưu trữ khác nhau?

  3. Tại sao CONCAT () không mặc định thành bộ ký tự mặc định trong MySQL?

  4. Mã cập nhật PHP / MySQL

  5. Sao lưu cơ sở dữ liệu mysql và tải xuống dưới dạng tệp