如何在MYSQL中插入相同ID的不同数据

时间:2011-08-03 22:54:59

标签: mysql

我有一张表格照片(product_id,description),就像这样 product_id
1
1
1
2
2个

我想插入“first”product_id = 1的描述;另一个为“第二”product_id = 1等等。有什么建议吗?

4 个答案:

答案 0 :(得分:2)

像@Shi所述,我会考虑使用唯一的主键。

否则,如果已填充条目,您可以使用类似于:

的内容

UPDATE Photos SET description="DESCRIPTION" WHERE product_id=1 AND description="" LIMIT 1;

这将为最早输入的行添加一个描述,其中包含匹配的ID和空白描述,假设它没有使用不同的列进行索引。

答案 1 :(得分:1)

你绝对应该使用混乱的主键,比如AUTO_INCREMENT值(http://dev.mysql.com/doc/refman/5.1/en/create-table.html)。

这样,每条记录都会获得一个自己的唯一标识符,然后您可以使用它来唯一标识任何给定的记录。

答案 2 :(得分:0)

您要做的是创建一个insert查询。插入主数据后,使用mysql_insert_id函数获取新插入行的ID。然后,使用此新ID,您可以使用update方法将任何新数据更新为您首次创建的行。

例如:

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}

mysql_select_db('mydb');
$variables = array (
    "one" => "something"
);

/* First query: */

mysql_query ("INSERT INTO mytable (product) values ('" . $variables["one"] . "')");

$new_id = mysql_insert_id();

/* Data processes... */

$variable["two"] = "Something else";

/* Second query: */

mysql_query ("UPDATE mytable SET something = '" . $variable["two"] . "' WHERE id = '" . $new_id . "');

答案 3 :(得分:0)

没有强硬法则强制你在MySQL中使用主键。你可以创建没有主键的表,甚至没有键或索引。

您可以使用存储引擎InnoDB定义这个:

CREATE TABLE photo_catalogue (
  product_id INT,
  description VARCHAR(128),
  INDEX(product_id, description)
) engine=InnoDB

如果要使用MyISAM表,请用CHAR(128)替换VARCHAR(128)。您可以选择将索引定义为UNIQUE

我已经在生产系统中看到过具有数百万条目而没有索引的MySQL表格。在porpuse上避免索引带来额外的内存和性能问题。