MySQL 子查询的别名不起作用
MySQL alias for Subquery doesnt work
我将此代码写入我的 MySQL 终端,但 MySQL 响应
"ERROR 1054 (42S22): Unknown column 'a.SD_ID' in 'on clause'"
我不知道为什么它不理解我的别名。
SELECT t.TBL_NAME AS 'TABLE',
t.TBL_TYPE AS 'TYPE',
a.COLUMN_NAME AS 'COLUMN_NAME',
a.TYPE_NAME AS 'TYPE'
FROM TBLS t
JOIN
(SELECT c.TYPE_NAME, c.COLUMN_NAME, c.CD_ID
FROM COLUMNS_V2 c, SDS s
WHERE c.CD_ID = s.CD_ID) a
ON t.SD_ID = a.SD_ID
WHERE t.TBL_TYPE = 'MANAGED_TABLE'
ORDER BY b.TBL_NAME, b.INTEGER_IDX;
我在 Ubuntu 系统的 MySQL 上查询了这个。
您需要在 subquery
中包含 SD_ID
列。检查下面的注释行。也更喜欢 ANSI 样式的连接:
SELECT
t.TBL_NAME AS 'TABLE',
t.TBL_TYPE AS 'TYPE',
a.COLUMN_NAME AS 'COLUMN_NAME',
a.TYPE_NAME AS 'TYPE'
FROM TBLS t
INNER JOIN
(SELECT c.TYPE_NAME, c.COLUMN_NAME, c.CD_ID -- include either c.SD_ID or s.SD_ID
FROM COLUMNS_V2 c
inner join SDS s
on c.CD_ID = s.CD_ID
) a
ON t.SD_ID = a.SD_ID
WHERE t.TBL_TYPE = 'MANAGED_TABLE'
ORDER BY b.TBL_NAME, b.INTEGER_IDX;
我将此代码写入我的 MySQL 终端,但 MySQL 响应 "ERROR 1054 (42S22): Unknown column 'a.SD_ID' in 'on clause'"
我不知道为什么它不理解我的别名。
SELECT t.TBL_NAME AS 'TABLE',
t.TBL_TYPE AS 'TYPE',
a.COLUMN_NAME AS 'COLUMN_NAME',
a.TYPE_NAME AS 'TYPE'
FROM TBLS t
JOIN
(SELECT c.TYPE_NAME, c.COLUMN_NAME, c.CD_ID
FROM COLUMNS_V2 c, SDS s
WHERE c.CD_ID = s.CD_ID) a
ON t.SD_ID = a.SD_ID
WHERE t.TBL_TYPE = 'MANAGED_TABLE'
ORDER BY b.TBL_NAME, b.INTEGER_IDX;
我在 Ubuntu 系统的 MySQL 上查询了这个。
您需要在 subquery
中包含 SD_ID
列。检查下面的注释行。也更喜欢 ANSI 样式的连接:
SELECT
t.TBL_NAME AS 'TABLE',
t.TBL_TYPE AS 'TYPE',
a.COLUMN_NAME AS 'COLUMN_NAME',
a.TYPE_NAME AS 'TYPE'
FROM TBLS t
INNER JOIN
(SELECT c.TYPE_NAME, c.COLUMN_NAME, c.CD_ID -- include either c.SD_ID or s.SD_ID
FROM COLUMNS_V2 c
inner join SDS s
on c.CD_ID = s.CD_ID
) a
ON t.SD_ID = a.SD_ID
WHERE t.TBL_TYPE = 'MANAGED_TABLE'
ORDER BY b.TBL_NAME, b.INTEGER_IDX;