0

我正在尝试将数据插入到两个表(table1 和 table2)中,条件是输入到 table1 中的数据的唯一性。Table1 在流行 & 电子邮件 & 社区上有一个独特的键集。这个想法是,如果同一个人在附近提交相同的流行音乐,那么任何一张桌子都不会发生任何事情。如果其他人进入相同的人口和社区,那么它会在 table1 中输入数据并将 table2 中的投票数增加 1。我听说有些人在谈论“忽略重复键”,我认为如果按如下方式实现它会起作用,但我是实际上不确定该命令是否真实:

 mysql_query("INSERT INTO `table1` VALUES ('$pop','$first', '$last', '$email',
'$neighborhood') on duplicate key ignore (INSERT INTO `table2` 
VALUES ('$pop', '$neighborhood','$votes', '$city') ON DUPLICATE KEY UPDATE 
`votes` = `votes` +1)"); 

我有以下代码工作,但了解它会将数据输入到 table2 中,而不管 table1 中的唯一数据如何。

 mysql_query("INSERT INTO `table1` VALUtS ('$pop','$first', '$last', '$email', '$neighborhood')"); 
 mysql_query("INSERT INTO `table2` VALUES ('$pop', '$neighborhood', '$votes', '$city') ON DUPLICATE KEY UPDATE `votes` = `votes` +1");

请让我知道,如果你有任何问题。

4

1 回答 1

0

为什么没有一张桌子?将您的唯一键更改为 pop,neighborhood,email(所以 pop,neighborhood 是最左边的两个,可以在一个组中使用)并删除“votes”列。然后,您可以运行类似的查询SELECT pop, neighborhood, count(*) AS votes FROM table1 GROUP BY pop,neighborhood;

我不认为有任何这样的东西ON DUPLICATE KEY IGNORE,但是INSERT IGNORE INTO ...基本上说如果插入失败,不返回任何错误。如果您需要保留单独的表,则必须运行第一个查询,检查是否有重复键错误,然后将重复键更新插入到第二个表中。

于 2012-08-15T04:32:14.947 回答