0
我有2个表,各个列和tokenid对于两者都是相同的。 第二个表有多个具有相同tokenid的行,其他列是不同的。从2个表中选择列作为具有相同ID的列作为列
现在,我需要从这两个表中的列表中选择标记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
我试图首先用不同查询第二表,并用它作为一个子查询加入table1。但数据库在表2中有超过200,000行,并且与由acolumn1
选择的tokenid匹配将产生约20000行结果。所以我的查询没有完成。有没有优化的方法来解决这个问题?
P.S:我想补充一点,我使用PDO
的可能的复制[MySQL的数据透视表(http://stackoverflow.com/questions/7674786/mysql-pivot-table) – shmosel
还有,你试过这么远吗? –
@ shA.t就像我说过的,尝试使用LEFT JOIN,使用像select colums(从...中选择列)这样的子查询。问题是,我有巨大的数据库和大多数查询未能成功加载 – Vijai