MySQL - 从两个不同的表重命名具有相同名称的选定列
问题描述:
我从两个不同的表中选择相同的列,但想要使用select as
来使它们具有不同的名称。MySQL - 从两个不同的表重命名具有相同名称的选定列
(SELECT letter AS letter_1, sex AS sex_1 FROM `celebs_a` LIMIT 1)
UNION
(SELECT letter AS letter_2, sex AS sex_2 FROM `celebs_b` LIMIT 1)
该查询返回此:
letter_1 sex_1
a 1
b 1
但是,我想它返回此:
letter_1 letter_2 sex_1 sex_2
a b 1 1
我怎样才能让该查询返回的每个值作为不同的列名?谢谢。
答
SELECT MAX(letter_1) AS letter_1, MAX(sex_1) AS sex_1,
MAX(letter_2) AS letter_2, MAX(sex_2) AS sex_2
FROM (
(SELECT letter AS letter_1, '' AS letter_2, sex AS sex_1, 0 AS sex_2
FROM celebs_a
LIMIT 1)
UNION
(SELECT '' AS letter_1, letter AS letter_2, 0 AS sex_1, sex AS sex_2
FROM celebs_b
LIMIT 1)
) AS derived_table_must_have_an_alias
您可以轻松地扩展这个到从每个表中选择多个列。只需将0
或''
作为另一个表中这些列的占位符。
答
试试这个:
SELECT
(SELECT letter AS letter_1 FROM `celebs_a` LIMIT 1) AS letter_1,
(SELECT letter AS letter_2 FROM `celebs_b` LIMIT 1) AS letter_2;
更新时间:
SELECT
(SELECT letter ... FROM celebs_a ...) AS letter_1,
(SELECT letter ... FROM celebs_b ...) AS letter_2,
(SELECT sex ... FROM celebs_a ...) AS sex_1,
(SELECT sex ... FROM celebs_b ...) AS sex_2
或者Barmars的做法会更好(这仅运行2 SELECT查询)
+0
嘿,工作!你能修改你的答案吗?我想从每个表中选择2列。有没有办法做到这一点,我不需要做一堆选择语句?最终,我要从每张桌子拉出大约20列。 – Graham 2014-10-11 01:46:58
+0
@Graham更新;) – 2014-10-11 01:54:00
我跑了那个查询,但得到这个错误:#1248 - 每个派生表必须有它自己的别名 – Graham 2014-10-11 01:57:00
固定在更新中。 – Barmar 2014-10-11 01:57:39
现在说:#1054 - '字段列表'中的未知列'0AS' – Graham 2014-10-11 02:03:08