我已经完成了对此的阅读,似乎这是不可能的。 事实是,由于列的数量是动态的,我无法明确提及它们。我放了别名,但'id'栏不断出现。
CREATE
无法正常工作,因为那里有3 id
列,这是非常的。
(这个查询实际上没问题,但它的工作方式请不要评估它)
CREATE TABLE merged as
SELECT *,
wuwebusers.id as wuwebusers_id,
jgwebusers_address.id as jgwebusers_address_id,
jgwebusers.id as jgwebusers_id
FROM wuwebusers
LEFT OUTER JOIN jgwebusers_address ON wuwebusers.id = jgwebusers_address.userid
LEFT OUTER JOIN jgwebusers ON wuwebusers.id = jgwebusers.userid
GROUP BY wuwebusers.id
编辑: 问题:除了一些明确的列之外,我如何选择每一列。我知道SELECT *不是正确的方法,因为我选择了所有。我正在寻求其他方式。
由于我必须执行此操作几次并且列是动态的,并且通过显式写入每个列名称而无法维护这些列。
答案 0 :(得分:1)
首先,您正在进行SELECT *
然后添加列。 *就是一切,因此你得到的是同一列的多个。您提供了不同名称的3个ID会在您的查询中被SELECT
再次*
。删除*并输入您需要的列,您就可以了。
CREATE TABLE merged as
SELECT
wuwebusers.id as wuwebusers_id,
jgwebusers_address.id as jgwebusers_address_id,
jgwebusers.id as jgwebusers_id ,
AllotherColumnsYouNeed as WhateverYouWantToCallthem
FROM wuwebusers
LEFT OUTER JOIN jgwebusers_address
ON wuwebusers.id = jgwebusers_address.userid
LEFT OUTER JOIN jgwebusers
ON wuwebusers.id = jgwebusers.userid
GROUP BY wuwebusers.id
/ 编辑 \如果您将表更改为不使用仅首先使用列ID的通用方法,您也可以解决此问题。例如,如果您有一个表名产品,请调用该表ProductID的ID列。这也将解决您的问题。