我怎样才能获得决赛桌?我想合并,以便如果它比较并且记录中有一个空列,它会用后一个值填充它。规则是 storetype 应该为每个用户只出现一次
问问题
2733 次
3 回答
0
这可能是我做过的最脏的代码:)...如果您要处理的记录超过数百条,我什至不会推荐它。让我知道,因为我无法在 IDE 上检查它。
<?php
$query = 'SELECT * FROM TABLE 1';
$result = mysql_query($query);
if ($result){
while ($result=mysql_fetch_array($result)){
$data[] = $row;
}
}
//
if (isset($data)){
$x=0;
$y=0;
$missingColumn = array();
while ($x < count($data)){
foreach ($data[$x] as $key=>$value){
if (empty($value)){
$missingColumn[$y][] = $key;
} else {
$output[$y][] = $value;
}
}
if ($missingColumn[$y]){
$rowComplete = FALSE;
$yetToBeCompleted = count($missingColumn[$y]);
while (!$rowComplete && $x<count($data)){
$x++;
foreach ($missingColumn as $value){
if ($data[$x][$value] <> ''){
$output[$y][$value] = $data[$x][$value];
$yetToBeCompleted--;
}
}
if (0 == $yetToBeCompleted){
$y++;
break;
//$rowComplete = TRUE;
}
}
$y++;
} else {
$y++;
$x++;
}
}
}
?>
于 2012-05-28T17:54:35.183 回答
0
也许我在 mysql 方面不是那么多才多艺,但没有任何困难的数据更改技术,我认为这是不可能的。
- 编辑特别是因为在某些列中,您采用最常遇到的值并用该值替换“合并”单元格
于 2012-05-28T17:54:53.560 回答
0
看起来您正在按username
and分组storetype
。尝试运行这个:
select min(id), username, min(filename), min(date), min(desc), storetype,
min(password), min(email), min(ftp)
from table1
group by username, storetype
请注意,当然,如果您确实拥有屏幕截图中显示的数据,即每列只有 1 个非空值,username
并且除列storetype
之外,每列中只有 1 个非空值id
。在这种情况下,该id
列看起来像是您选择了最小值,因此查询也会导致该值。
于 2012-05-28T18:29:25.910 回答