我有一个mysql表:
-----------------------------------------------------------
time | host | var1 | var2 ....
20110101 | hostA | 7 | 8 ....
20110102 | hostB | 2 | 3 ....
20110102 | hostA | 4 | 2 ....
20110103 | hostC | 9 | 9 ....
20110104 | hostC | 1 | 1 ....
20110104 | hostA | 10 | 2 ....
.... etc ......
-----------------------------------------------------------
我想为每个变量(var1,var2,var3等)创建新表,看起来像(对于var1):
-----------------------------------------------------------
time | hostA-var1 | hostB-var1 | hostC-var1
20110101 | 7 | null | null ....
20110102 | 4 | 2 | null ....
20110103 | null | null | 9 ....
20110104 | 10 | null | 1 ....
.... etc ......
-----------------------------------------------------------
原始表格相当大,因此性能受到关注。我对mysql不是很精通,我能想到的唯一方法是提取每个主机唯一的表,然后按时连接。因此(对于var1):
create tempTableA select time, var1 as hostA-var1 from mainTable where host=hostA
create tempTableB select time, var1 as hostB-var1 from mainTable where host=hostB
然后使用时间变量对所有tempTable进行连接。
答案 0 :(得分:0)
如果您只想在查询中合并两个字段,我建议使用CONCAT函数。
假设你需要匹配与var2合并的var1,你可以使用
CONCAT(`var1`,`var2`)
因此,您必须找到具有var1和var2且中间为句点的行,您可以使用:
$sql = "SELECT * FROM `table` WHERE CONCAT(`var1`,'.',`var2`)='$input'";
如果你想输出var1和var2,其中包含一个句点:
$sql = "SELECT CONCAT(`var1`,'.',`var2`) AS `var1andvar2` FROM `table`";
希望有所帮助。
答案 1 :(得分:0)