代码之家  ›  专栏  ›  技术社区  ›  Steven Smethurst

SQL内部连接两个具有相同列名的表

  •  14
  • Steven Smethurst  · 技术社区  · 14 年前

    我有两个列数可变的表(我不知道会有多少列或名称)例如表A和表B。

    表A:

    ID | B_ID | {variable} 
    

    表B

    ID | {variable} 
    

    SELECT TableA.*, TableB.* FROM TableA INNER JOIN TableB ON TableA.B_ID= TableB.id;
    

    当TableA和TableB都有一个同名的列时,我无法区分这两个不同的列。例如,这两个表都有列“Name”,此查询将导致:

    ID | ID | B_ID | NAME | NAME |
     1 | 35 | 35   | bob  | jim  |
    

    TableA_ID | TableB_ID | TableA_B_ID | TableA_NAME | TableB_NAME |
            1 |        35 |          35 |         bob |         jim |
    

    我知道“AS”关键字,但问题是我不知道前面的列名是什么(我不知道TableA或TableB是否有列名)

    所以我的问题是

    我正在使用SQLite3。

    2 回复  |  直到 14 年前
        1
  •  13
  •   AllenG    14 年前

    您的结果集(给定您的查询)应该有所有TableA列,后跟所有TableB列,因此当您转到第二列时 ID 科伦,你知道你喜欢表格数据。

    也就是说,在我看来,查询两个表中的所有数据是很奇怪的,而这两个表在功能上一无所知。。。

        2
  •  8
  •   MPelletier    13 年前

    这是一个公认的黑客解决方案,但是:

    SELECT TableA.*, "#", TableB.* 
    FROM TableA INNER JOIN TableB ON TableA.B_ID= TableB.id;
    

    将生成一个结果列表,并将其分为两个块,即#列的左侧和右侧。