从2个表中选择列,其中行作为具有相同ID的列

时间:2017-01-06 06:20:03

标签: mysql sql

我有两个包含各种列的表,而且两个令牌都相同。 第二个表有多个具有相同tokenid的行,而其他列则不同。

现在,我需要从两个表中选择令牌ID相同的列,而在第二个表中,必须将具有相同tokenid的行转换为列。

表1:

tokenid   acolumn1   acolumn2   acolumn4
   1       fname1     mname1     lname1
   2       fname2     mname2     lname2

表2:

id   tokenid   bquestion   banswer
 1       1     questiona   answera
 2       1     questionb   answerb
 3       2     questiona   answera
 4       2     questionb   answerb
 5       3     questionc   answerc

结果应为

tokenid   acolumn1   acolumn2   acolumn3   bquestion1   banswer1   bquestion2   banswer2   bquestion3   banswer3
  1        fname1     mname1     lname1     questiona   answera    questionb    answerb    null           null  
  2        fname2     mname2     lname2     questiona   answera    questionb    answerb    questionc    answerc

我尝试先使用distinct查询第二个表,并将其用作子查询以与table1连接。但是数据库在表2中有超过200,000行,并且与acolumn1选择的tokenid匹配将产生大约20000行结果。所以我的查询没有完成。是否有任何优化的方法来解决这个问题?

P.S:我想补充一点,我使用pdo

进行查询

1 个答案:

答案 0 :(得分:-2)

尝试使用此代码,这会加入table1和table2的所有列。

Click here to see output

SELECT table1.tokenid, table1.acol1, table1.acol2, table1.acol3, table2.bquestion, table2.banswer FROM table1
    INNER JOIN table2
    ON table1.tokenid=table2.tokenid