【发布时间】:2014-04-07 06:59:35
【问题描述】:
SELECT t1.*,t2.* FROM
(SELECT pp.id as ppid, pp.*,tab3.*,tab2.* FROM tab1 AS pp
LEFT JOIN tab3 ON pp.id = tab3.name_id
LEFT JOIN tab2 ON pp.id = tab2.name_id) AS t1
JOIN
(
SELECT tab2.id as colname_id,tab2.*,tab3.* FROM tab2
LEFT JOIN tab3 ON tab2.coltestconsent_id = tab3.coltestconsent_ID
) AS t2
WHERE t1.ppid = t2.colname_id;
描述:上面的查询没有运行它的创建错误:
错误代码:1060 重复的列名“id”
为了使上述查询成功,我必须输入列名而不是“*” 如下:
SELECT t1.*,t2.* FROM
(SELECT pp.first_name,pp.id ppid,tab3.id AS coltestrisk_id,tab2.id AS coltest_id FROM tab1 AS pp
LEFT JOIN tab3 ON pp.id = tab3.name_id
LEFT JOIN tab2 ON pp.id = tab2.name_id) AS t1
JOIN
(
SELECT tab2.coltestconsent_id AS coltestconsent_id,tab3.coltestconsent_ID AS colriskconsent_id,tab2.name_id AS colname_id,tab3.name_id AS coltest_nameid FROM tab2
LEFT JOIN tab3 ON tab2.coltestconsent_id = tab3.coltestconsent_ID
) AS t2
WHERE t1.ppid = t2.colname_id;
要求:我想获取所有表的所有列值。每个表有 60-80 列。我不想在我的查询中手动输入列名,因为它们有很多列。
【问题讨论】:
-
你还有一个错误,在 "as t2" 之后,你还没有应用 "on"
-
@AK47:在 MySQL 中,连接谓词是可选的。