2013-07-21 141 views
0


我想獲取我的表(示例)中的auto_increment列的值。但是,我不知道auto_increment字段的名稱。我目前使用下面的查詢,以確定該字段的名稱:在MySQL中使用SELECT查詢作爲列名稱

SELECT column_name FROM information_schema.columns WHERE table_name = 'example' AND extra = 'auto_increment' LIMIT 1; 

我現在想通過實驗結果的查詢,作爲「字符串」我實際的查詢,並獲得價值。如果我想一次性執行此操作,那麼我該怎麼做,因爲下面的查詢應該會給我所用的所有auto_increment值,只會產生上述結果 - 即auto_increment列名稱。

SELECT (
    SELECT column_name 
    FROM information_schema.columns 
    WHERE table_name = 'example' 
    AND extra = 'auto_increment' 
    LIMIT 1 
) AS pri 
FROM example 

任何想法,將不勝感激:)
許多方面,

安德烈亞斯

+0

你不能在標準的SQL中。您必須使用「獲取ID列名稱」查詢的結果來構建新的查詢。基本上你需要'eval()'的sql等價物。 –

+0

你真的想做什麼?自動增量列中的值並不特別有趣,只是一堆整數。而且,您是否熟悉「準備」聲明。你需要使用動態SQL來完成你所要求的。 –

回答

0

這裏是你將如何做到這一點使用prepareexecute一個例子:

SELECT @s := concat('select `', column_name, '` from example e') 
FROM information_schema.columns 
WHERE table_name = 'example' AND extra = 'auto_increment' 
LIMIT 1 

prepare stmt from @s; 
execute stmt; 
deallocate prepare stmt;