English 中文(简体)
1. 使用多栏作为我的仪表识别器
原标题:Use multiple columns as unique identifier for mysql
  • 时间:2010-09-26 15:51:27
  •  标签:
  • mysql

我有一个我的桌子,分以下几栏:

group_id
game_id
user_id
message
last_update

我想这样说,如果集团对等值的价值等于集团对增长的回报,那么不可能有两行,而用户对浏览量的价值也等于使用者对增长和增长的价值。

因此,例如,我要说,以下价值观:

group_id = 783
game_id = 34
user_id = 29237
message = none
last_update = 11233452

上述数据,即使我方设法插入数据,如果已经存在一种由团体_id和用户_id等组合的行文,则不应形成新行。 是否有办法这样做? 基本上,我试图分两栏,共同工作,如一个独特的指数。

最佳回答

是的,我的SQL提供了这样做的能力。

ALTER TABLE MyTable
ADD UNIQUE KEY `my_unique_key` (`group_id`, `user_id`)

我不知道你用这个表格做些什么,但像这个独特的关键人物一样,它可能是一个强大的候选人,成为会议的主要关键人物。 首要关键也是一个独特的关键。 如果你决定把它作为主要钥匙,那么就采取下列行动:

ALTER TABLE MyTable
ADD PRIMARY KEY (`group_id`, `user_id`)

(如果你收到错误信息,即已经存在主要关键,然后发布<代码>)。 ALTER TABLE MyTable DROP PRIMaire KEY, 然后重复上述指令。

<><>Edit>: 针对用户的评论

您在独特钥匙所涵盖的各栏中不能有相同的非<代码>NUL数值的多行。 因此,例如,在<代码>小组_id = 0和用户_id = 5 上,你不能有两行。 页: 1 但是,如果你使一栏或两栏失去效力,则。 因此,在<代码>组_id ISNUL和用户_id = 1234上,你可以有两条(或更多)行。

Proviso:对通用的MySQL储存发动机(MyISAM和InnoDB)来说,以上都是如此。 MySQL确实有储存发动机,其中NUL被视为一种独特的价值,但你可能不使用这些发动机。

如果你使一栏或两栏都失效,那么你的独特关键就不能成为主要的关键,主要的关键必须是<代码>栏。 NOT NUL。

请允许我指出,你把这一关键的关键放在了你们身上,现在希望允许在<条码>中登出<>NUL>。 页: 1 我不知道什么数据类型<代码>类别? 此时此刻,我假定目前为<条码>。 你们再也无法把这一关键作为你们的主要关键。 这里,你可以指挥进行预期的改变:

ALTER TABLE MyTable
    DROP PRIMARY KEY,
    MODIFY group_id INT UNSIGNED,
    ADD UNIQUE KEY `my_unique_key_with_nulls` (`group_id`, `user`)
问题回答

这对你来说,可以创造集体——id和用户——的复合钥匙,使用任何象Sandql编辑,如phpmyadmin或qlyog,并将其标记为独特的指数。





相关问题
SQL SubQuery getting particular column

I noticed that there were some threads with similar questions, and I did look through them but did not really get a convincing answer. Here s my question: The subquery below returns a Table with 3 ...

please can anyone check this while loop and if condition

<?php $con=mysql_connect("localhost","mts","mts"); if(!con) { die( unable to connect . mysql_error()); } mysql_select_db("mts",$con); /* date_default_timezone_set ("Asia/Calcutta"); $date = ...

php return a specific row from query

Is it possible in php to return a specific row of data from a mysql query? None of the fetch statements that I ve found return a 2 dimensional array to access specific rows. I want to be able to ...

Character Encodings in PHP and MySQL

Our website was developed with a meta tag set to... <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> This works fine for M-dashes and special quotes, etc. However, I ...

Pagination Strategies for Complex (slow) Datasets

What are some of the strategies being used for pagination of data sets that involve complex queries? count(*) takes ~1.5 sec so we don t want to hit the DB for every page view. Currently there are ~...

Averaging a total in mySQL

My table looks like person_id | car_id | miles ------------------------------ 1 | 1 | 100 1 | 2 | 200 2 | 3 | 1000 2 | 4 | 500 I need to ...