我正在尝试根据公共列trainSearchStream
加入两个表:SearchInfo
和SearchID
。
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语句的结果保存在新表中?
答案 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
。