Получите уникальные сочетания клавиш MySQL - PullRequest
0 голосов
/ 29 июля 2011

Если у меня есть таблица, созданная аналогично следующему:

CREATE TABLE MyTable(
    id1Part1 INT NOT NULL,
    id1Part2 INT NOT NULL,

    id2Part1 INT NOT NULL,
    id2Part2 INT NOT NULL,

    UNIQUE KEY (id1Part1, id1Part2),
    UNIQUE KEY (id2Part1, id2Part2)
);

как мне теперь попросить базу данных дать мне два кортежа с "уникальным ключом"?
(SHOW INDEX, похоже, не делает этого.)

Ответы [ 2 ]

1 голос
/ 29 июля 2011

mysql не может дать вам два первичных ключа. Проверьте это:

mysql> CREATE TABLE MyTable(
    ->     id1Part1 INT NOT NULL,
    ->     id1Part2 INT NOT NULL,
    -> 
    ->     id2Part1 INT NOT NULL,
    ->     id2Part2 INT NOT NULL,
    -> 
    ->     UNIQUE KEY (id1Part1, id1Part2),
    ->     UNIQUE KEY (id2Part1, id2Part2)
    -> );
Query OK, 0 rows affected (0.17 sec)

mysql> desc mytable;
+----------+---------+------+-----+---------+-------+
| Field    | Type    | Null | Key | Default | Extra |
+----------+---------+------+-----+---------+-------+
| id1Part1 | int(11) | NO   | PRI | NULL    |       |
| id1Part2 | int(11) | NO   | PRI | NULL    |       |
| id2Part1 | int(11) | NO   | MUL | NULL    |       |
| id2Part2 | int(11) | NO   |     | NULL    |       |
+----------+---------+------+-----+---------+-------+

Показывает, что существует только один первичный ключ.

1 голос
/ 29 июля 2011

Я не уверен, что вы ищете что-то вроде этого

select
constraint_name,
group_concat(column_name order by ordinal_position) as cols
from information_schema.key_column_usage
where table_schema = 'db_name' and table_name = 'table_name'
group by constraint_name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...