2013-12-07 59 views
3

MySQL中是否可以使用「主鍵」而不是在SELECT * WHERE查詢中的列?MySQL使用SELECT WHERE主鍵= XYZ

示例情況:

table1: 
name (P) | surname 

table2: 
page (P) | content 

我已經試過(PHP)

SELECT * FROM $table WHERE PRIMARY=$row 

和什麼也沒有返回(儘管PHPMyAdmin的高亮顯示)。

我想這樣做,因爲我想打一個getDbData功能,我只需要指定表($table)和行($row,列名是主鍵的值),它返回單列我需要。

+0

您的主鍵應該是一列 –

+1

不,你不能這樣做。請記住,主鍵可以是複合鍵,指的是多列。 –

+0

var_dump查詢然後在phpmyadmin中運行它,看看它是否在那裏工作。 – elliotanderson

回答

5

我猜你不想提供主鍵的名稱,而是讓它自動選擇。在這種情況下,您應該首先獲取主鍵的列名,然後使主鍵的名稱傳遞簡單的查詢。

// first query 
SELECT k.column_name 
FROM information_schema.table_constraints t 
JOIN information_schema.key_column_usage k 
USING(constraint_name,table_schema,table_name) 
WHERE t.constraint_type='PRIMARY KEY' 
    AND t.table_schema='YourDatabase' 
    AND t.table_name='YourTable'; 

// second query 
SELECT * FROM $table WHERE $primary=$row 

其中$primary是通過運行第一個查詢得到的列名。

更好的方法是使用SHOW KEYS,因爲您並不總是可以訪問information_schema。以下工作:

SHOW KEYS FROM table WHERE Key_name = 'PRIMARY' 
// Column_name will contain the name of the primary key. 
+0

謝謝!這工作,我只是運行一個單獨的查詢來獲得列,然後把它放到我的'WHERE'子句。 – Kieran

+0

任何想法如何應用組合鍵? – Daniel