ПЕРВИЧНЫЙ ключ отличается от столбца, в котором есть первичный ключ. Первичный ключ является как индексом, так и ограничением, которое размещается в одном или нескольких столбцах, а не в самом столбце. Ваш запрос псевдокода:
SELECT PRIMARY_KEY
FROM tablename
эквивалентно этому:
SELECT keyname
FROM tablename
Что неверно. Вам действительно нужно выбрать столбец, а не ключ.
К сожалению, нет псевдонима столбца или простой функции, которую можно использовать для указания столбцов с ограничением первичного ключа. Скорее всего, он недоступен, поскольку первичный ключ может применяться к нескольким столбцам.
Чтобы увидеть, какие столбцы имеют ограничение ключа PRIMARY, вы можете использовать некоторое отражение, запросив таблицы схем, используя SHOW COLUMNS
и т. Д. Простое выполнение SELECT * FROM tablename LIMIT 1
даст вам все имена столбцов в результате, если вы хотел предположить, что первый столбец имеет ограничение первичного ключа.
Конечно, вы могли бы просто сделать SELECT *
в любом случае, когда вы не знаете имя столбца.
Если вы не хотите делать дополнительный запрос для извлечения имени столбца для построения запроса, используя встроенные метаданные или ваши собственные, я бы прислушался к ответу Марка Б., если вы можете.