2012-02-07 36 views
1

我這一段代碼從MySQL第4版以檢查表存在確定表存在

SELECT * FROM table WHERE FALSE; 

我不能挺下站在where條款。
如果我不是弄錯存在的MySQL沒有布爾類型,所以基本上被轉換爲

SELECT * FROM table WHERE 0; 

而且它應該是一個where條款列?

SELECT * FROM table WHERE column = false; 

任何解釋,非常感謝。

回答

2

不,它不需要必須有列操作:)

當您打開mysql的select manualexpressions你會發現有simple_expr什麼都要說像條件WHERE 1(約booleans),但我知道它可能會造成混淆(並且使用沒有列的條件很少見)。

當你做SELECT * FROM table WHERE FALSE;它基本上是這樣的:

if there's table `table` 
    return 0 rows (minimal database overhead) and valid resource 
else 
    return false 

只要看看上返回值從mysql_query

0

檢查對錶的存在

$sql="SELECT * FROM $table"; 
$result=mysql_query($sql); 
if (!$result) 
{ 
// table does not exist 
} 

要回答你的問題:

where子句用於檢索給定表中的列的值。例如,如果你的表是由兩列(USER_ID,USER_NAME)的,您的查詢可能類似於以下內容:

$sql="SELECT * FROM $table where user_id = 1"; 

最後,你可以閱讀更多關於where條款at this link

+0

介意解釋投票嗎?如果這個答案缺乏,我會很樂意擴展任何一點。 – 2012-02-07 21:00:57

+0

當我讀到你的答案並且downvoted時,它只有第一部分,它沒有回答這個問題(這也是檢查一個表是否存在的一種非常低效的方法)。現在看看你的編輯,你還沒有真正回答這個問題,這個問題是關於沒有列的where子句的含義。 – 2012-02-07 21:39:29

+0

@Paul off topic - 我也來自紐約州奧爾巴尼:) – 2012-02-07 21:43:08

0

我假設MySQL 4.x支持ANSI。如果是的話,你可以嘗試以下方法:

SELECT count(*) 
FROM information_schema.tables 
WHERE table_schema = <schema-or-db-name> 
AND table_name = <table-or-view-name>