合并两个SQL表

  • 本文关键字:两个 SQL 合并 sql
  • 更新时间 :
  • 英文 :


我有两个彼此不相关的SQL表。但我需要这两个人来显示名字。

查询是:

SELECT ca_nombre 
FROM cancion 
ORDER BY ca_nombre ASC;
SELECT bai_nombre 
FROM baile 
ORDER BY bai_nombre ASC;

输出:

Amiga
Gracias a ti
La gata bajo la lluvia
Las locuras mías
Tu
Break dance
Danza clásica
Danza irlandesa
Flamenco
Polca
Salsa
cumbia
samba

但是我需要这样的输出:

Amiga
Arrow
Break dance
Cumbia
Danza clasica
Danza irlandesa
Gracias a ti
La gata bajo la lluvia
Las locuras mias
Polca
Salsa
Samba
Tu

cancion表有如下数据:

Amiga
Gracias a ti
La gata bajo la lluvia
Las locuras mías
Tu

dance表有以下数据:

Break dance
Danza clásica
Danza irlandesa
Flamenco
Polca
Salsa
cumbia
samba

我如何组合它们并获得我需要的输出?

这是取消和恢复表脚本:

CREATE TABLE baile
(
bai_id INT NOT NULL,
bai_nombre CHAR(30) NOT NULL,
bai_antiguedad INT NULL,
bai_duracion INT NULL,
FOREIGN KEY (bai_id) REFERENCES concurso(con_id)
);
INSERT INTO baile VALUES (102, "cumbia", 40, 5);
INSERT INTO baile VALUES (102, "samba", 50, 5);
INSERT INTO baile VALUES (102, "Break dance", 30, 4);
INSERT INTO baile VALUES (102, "Salsa", 30, 4);
INSERT INTO baile VALUES (102, "Danza irlandesa", 34, 7);
INSERT INTO baile VALUES (102, "Flamenco", 35, 6);
INSERT INTO baile VALUES (102, "Polca", 50, 6);
INSERT INTO baile VALUES (102, "Danza clásica", 56, 5);
CREATE TABLE cancion
(
ca_id INT NOT NULL AUTO_INCREMENT,
ca_nombre CHAR(30) NULL,
ca_genero CHAR(20) NULL,
ca_anio YEAR NULL,
ca_cantante INT NOT NULL,
FOREIGN KEY (ca_id)REFERENCES concurso (con_id),
FOREIGN KEY (ca_cantante) REFERENCES cantante (can_id)
);
INSERT INTO cancion VALUES (102, "Amiga", "Balada", "1990", 101);
INSERT INTO cancion VALUES (102, "Las locuras mías", "vallenato", "2019", 102);
INSERT INTO cancion VALUES (102, "Gracias a ti", "popular", "2020", 103);
INSERT INTO cancion VALUES (102, "Tu", "popular", "2019", 104);
INSERT INTO cancion VALUES (102, "La gata bajo la lluvia", "Balada", "1981", 105);

虽然它有外键,但它们不是查询所必需的,因为我只需要按字母顺序排列歌曲和舞蹈的名称。

看起来您希望对数据进行整体排序。您还没有指定您的数据库,但这将在大多数数据库中工作:

SELECT ca_nombre as nombre
FROM cancion 
UNION ALL
SELECT bai_nombre
FROM baile
ORDER BY nombre ASC;

但是,有些数据库要求UNION ALL在子查询中:

SELECT nombre
FROM (SELECT ca_nombre as nombre
FROM cancion 
UNION ALL
SELECT bai_nombre
FROM baile
) n
ORDER BY nombre;

最新更新