ファイナルテーブルを取得するにはどうすればよいですか?比較してレコードに空の列がある場合、後者の値で埋められるようにマージしたいと思います。ルールでは、ストアタイプはユーザーごとに1回だけ表示する必要があります
質問する
2733 次
3 に答える
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
もちろん、これは、スクリーンショットに表示されているデータが実際にある場合に機能します。つまり、各列にnull以外の値が1つだけあり、列以外の各列username
にstoretype
ペアがありid
ます。その場合、id
列は最小値を選択したように見えるので、クエリでもその結果になります。
于 2012-05-28T18:29:25.910 に答える
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 に答える