使用join时重复列

时间:2015-07-08 14:21:53

标签: sql sqlite

我正在尝试根据公共列trainSearchStream加入两个表:SearchInfoSearchID

SELECT *
FROM   trainSearchStream
       INNER JOIN SearchInfo
               ON trainSearchStream.SearchID = SearchInfo.SearchID
LIMIT  3; 

问题是结果有两列SearchID。如何只显示SearchID的一列?

这些是trainSearchStream

的列
SearchID,AdID,Position,ObjectType,HistCTR,IsClick

这些是SearchInfo的列:

 SearchDate,IPID,UserID,IsUserLoggedOn,SearchQuery,LocationID,CategoryID,SearchParams

我的另一个问题是如何将select语句的结果保存在新表中?

2 个答案:

答案 0 :(得分:2)

抛弃*列表中的 SELECT ,并提供要返回的特定列列表。

  SELECT t.SearchID
       , t.AdID
       , t.Position
       , t.ObjectType
       , t.HistCTR
       , t.IsClick
       , i.SearchDate
       , i.IPID
       , i.UserID
       , i.IsUserLoggedOn
       , i.SearchQuery
       , i.LocationID
       , i.CategoryID
       , i.SearchParams
    FROM trainSearchStream t
    JOIN SearchInfo i 
      ON t.SearchID = i..SearchID
   LIMIT 3;

To" save"在另一个表中的结果,您可以使用INSERT ... SELECT statemeent。如果要创建新表,可以使用CREATE TABLE ... SELECT语句。

参考文献:

INSERT ... SELECT https://dev.mysql.com/doc/refman/5.5/en/insert-select.html

CREATE TABLE ... SELECT https://dev.mysql.com/doc/refman/5.5/en/create-table-select.html

答案 1 :(得分:1)

准确指定要查看的列。这始终是首选方式

SELECT 
t.SearchID,AdID,Position,ObjectType,HistCTR,IsClick,
SearchDate, IPID,UserID,IsUserLoggedOn,SearchQuery,LocationID,CategoryID,SearchParams
FROM trainSearchStream  t
INNER JOIN SearchInfo ON trainSearchStream.SearchID = SearchInfo.SearchID LIMIT 3;

修改

我忘记包含别名并将其应用于列SearchId