如何进行以下查询以获取所需信息

时间:2011-01-12 07:47:59

标签: sql mysql sql-server

我有两张桌子

  • CompList表包含以下列:CompIdMcIDstationslotsubslot以及其他几个< / p>

  • BookingTable包含以下列:CompIdLineIDMcIDstationslotsubslot

我希望获得以下结果:

只有CompList.CompId == BookingTable.CompId的行(只有两个表中的CompId)

我需要CompList中的结果列:CompIdMcIDstationslotsubslot和来自{{ 1}}:BookingTableLineIDMcIDstationslot

我怎样才能在结果表中区分结果表中相同列的相同列?

感谢您的帮助。

6 个答案:

答案 0 :(得分:2)

在select语句中为表名添加所有列名,并使用别名消除结果集中列的歧义:

http://www.w3schools.com/SQl/sql_alias.asp

说,我不清楚为什么你有这么多看似多余的数据。

答案 1 :(得分:2)

使用别名:

SELECT 
    CL.CompId,
    CL.McID,
    CL.station,
    CL.slot,
    CL.subslot,
    BT.LineID,
    BT.McID     as BookingMcId, 
    BT.station  as BookingStation, 
    BT.slot     as BookingSlot, 
    BT.subslot  as BookingSubslot
FROM CompList as CL
JOIN BookingTable as BT ON BT.CompId = CL.CompId

答案 2 :(得分:0)

select c.CompId,c.D,c.station,c.slot,c.subslot,b.neID,b.McID,b.station,b.slot,b.subslot from CompList c join BookingTable b on c.ComId=b.CompId

答案 3 :(得分:0)

您在表之间执行内部联接,并使用列别名来区分不同表中具有相同名称的列。 http://msdn.microsoft.com/en-us/library/ms187731.aspx

select T1.Name as T1Name, T2.Name as T2Name
from T1
  inner join T2
    on T1.ID = T2.ID

答案 4 :(得分:0)

SELECT 
   cl.CompId , cl.McID , cl.station, cl.slot, cl.subslot, 
   bt.LineID, bt.McID, bt.station, bt.slot, bt.subslot 
FROM 
   CompList cl 
INNER JOIN 
   BookingTable bt ON cl.McID=bt.McID

答案 5 :(得分:0)

根据您的问题,要区分CompList和BookingTable的列,请使用您希望在结果中获取的列的别名。

例如:让我们有两个表t1&amp; t2,在cols中都有相同的名称,表示cid,name,roll和address。

获取t1.cid == t2.cid(只有两个表中的cid)

我们写道:选择t1.cid,         t1.name为name1,         t1.roll as roll1,         t1.address as address1,         t2.name为name2,         t2.roll为roll2,         t2.address as address2     从t1,t2 其中t1.cid = t2.cid;