2013-10-22 81 views
-1

我已经完成了关于这个阅读的分配,似乎是不可能的。 问题是,由于列的数量是动态的,我不能明确提及它们。我输入了别名,但'id'列不断出现。SELECT *查询,不包括列

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 *不是正确的方法,因为我选择了全部。我正在寻求其他方式。

由于我必须这样做几次,并且列是动态的,并且通过明确编写每个列名称不能维护这些列。

+3

你有问题吗?不要使用'select *',你应该总是指定你想要包含在你的查询中的列。 – Taryn

+0

看看这个http://stackoverflow.com/questions/413819/select-except。虽然他们不建议这样做,但您的答案是 –

+2

尝试清楚您需要帮助的内容。 – Fred

回答

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 

/编辑 \如果你改变了你的表不使用的只是你也会解决这个问题首先labling列ID的泛型方法。例如,如果您有一个表名称产品,请调用该表的ProductID的ID列。这也可以解决你的问题。

+0

OP状态列是动态的,不能明确地命名它们。这不会工作或至少不会满足要求。 – Fred

+0

是的,我的答案后添加了。 – Zane

+0

这是原来的帖子 – Fred