我怎样才能获得决赛桌?我想合并,如果它比较并且记录中有一个空列,它会用后一个值填充它。规则是storetype应该只为每个用户出现一次
答案 0 :(得分: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++;
}
}
}
?>
答案 1 :(得分:0)
也许我不是那种多功能的mysql,但没有任何困难的数据更改技术,我认为这是不可能的。
答案 2 :(得分:0)
您好像是按username
和storetype
进行分组。试试这个:
select min(id), username, min(filename), min(date), min(desc), storetype,
min(password), min(email), min(ftp)
from table1
group by username, storetype
注意,当然,这将适用于您确实拥有屏幕截图中显示的数据的情况,即每个username
和storetype
对中只有1个非空值列,但id
列。在这种情况下,id
列似乎您选择了最小值,因此查询也会产生最小值。