0
<?php
$db = mysql_connect('localhost', 'root', '') or
  die ('Unable to connect. Check your connection parameters.');

mysql_select_db('my_db', $db) or die(mysql_error($db));

$query = 'SELECT
       second, count(*) FROM tb_one GROUP BY second';


$result = mysql_query($query, $db) or die(mysql_error($db));

while ($row = mysql_fetch_assoc($result)) {

    foreach ($row as $value) {

        $queryy = 'INSERT INTO tb_two (name) VALUES ("' . $value . '")';
        mysql_query($queryy, $db) or die(mysql_error($db));

    }
}
?>

このスクリプトでは、最初のクエリは重複する値を選択してカウントすることを目的としています(うまく機能します)が、2番目のクエリでは、選択したデータを別のテーブルに挿入したいと思います。重複...挿入ステートメントに1つの列がある場合、それはうまく機能し、値を追加します。しかし、2 つの列が必要です。1 つは名前用で、もう 1 つは重複のカウント数用です。ありがとうございます...私は何日もそれを試してきました..

4

3 に答える 3

4

これはすべて MySQL で実行できます。

INSERT INTO tb_two(name, count)
    SELECT second, count(*) 
    FROM tb_one 
    GROUP BY second;

ただし、他のニュースでは、mysql_ 関数は非推奨になりました。PDO Libraryを使用する必要があります。または、少なくともMySQL 改良ライブラリ.

于 2013-08-13T15:01:49.563 に答える
0

これを試してください。構文に問題がある場合は申し訳ありません。メモ帳で行いました。

while ($row = mysql_fetch_assoc($result)) 
{
    $query = "INSERT INTO tb_two (column1, column2) VALUES ('" . $row[0] . "', '" . $row[1] . "')";
    mysql_query($query, $db) or die(mysql_error($db));
}
于 2013-08-13T15:07:38.760 に答える
0

重複した列にエイリアスを設定することで作業が楽になり、より簡単に対処できるようになります。方法は次のとおりです。

これを交換

$query = 'SELECT second, count(*) FROM tb_one GROUP BY second';

これで:

$query = 'SELECT second, count(*) as duplicates FROM tb_one GROUP BY second';

列名として「重複」があります。次に、たとえば次のように使用できます。

while ($row = mysql_fetch_assoc($result)) {

foreach ($row as $r) {

$queryy = "INSERT INTO tb_two SET name='".$r['second']."', duplicates='".$r['duplicates']."'";
mysql_query($queryy, $db) or die(mysql_error($db));

}
}
于 2013-08-13T15:04:38.263 に答える