2013-03-03 76 views
1

我試圖排除從這個基本的查詢結果:需要更具體的MySQL查詢

SELECT PageID, PlanID 
FROM table 
WHERE PlanID = 1 
AND PageID in !=0 

這是一個映射表,加入像博客,標​​籤,標籤,圖像等物體..

我的問題是有其他的結果,此查詢上拿起..

PlanID = 1 - PageID = 234 - OtherID = 0 
PlanID = 1 - PageID = 234 - OtherID = 456 

在現實中,這是我想寫什麼:

SELECT PageID, PlanID 
FROM table 
WHERE PlanID = 1 
AND PageID !=0 
AND OtherID = 0 
AND OtherID = 0 
AND OtherID = 0 
AND OtherID = 0 
AND OtherID = 0 

我不想一遍又一遍寫很多'OtherID's = 0', 因爲這是一個動態查詢,'PageID'可以是任何一個'OtherID'。

有沒有辦法排除所有的「OtherID的具有把它們寫出來, 出來或有做一些類型的動態在我的代碼,與切換!= 0 ID」 OtherID的= 0

喜歡的東西:

SELECT PageID, PlanID 
FROM table 
WHERE PlanID = 1 
AND PageID !=0 
AND AllOtherFields = 0 

我不是如何申請不同的查詢只是說的pageID = 0和planID = 1 或者只是零的所有,我不是找田..?

+0

你能張貼您正在使用的實際表結構?我對_pageID感到困惑,可能是其他ID_部分中的任何一個... – 2013-03-03 20:16:03

+0

PageID是傳遞給函數的參數變量。在任何時候,我都試圖找到兩個加入的對象,也有一個planID爲1.所以我遇到的問題是寫出所有其他字段名並確保它們等於0。不想寫出其他字段名稱..我寧願有一個更明確的查詢,忽略表中的其他字段名稱。 – Kusanagi 2013-03-03 20:30:49

回答

0

這是你想要的嗎?

SELECT PageID, PlanID 
FROM table 
WHERE PlanID = 1 and 
     PageID <> 0 and 
     OtherId <> 0 

注意:您可以使用!=<>。它們是等價的。

如果要檢查所有其他字段爲0,你可以這樣做:

SELECT PageID, PlanID 
FROM table 
WHERE PlanID = 1 and 
     PageID <> 0 and 
     0 not in (OtherId1, otherid2, otherid3, . . .) 
+0

是的,上面的工作是我想要的。但是,它仍然迫使我寫出字段名。 0不在(OtherId1,otherid2,otherid3,。。。) 相同 AND OtherID = 0 AND OtherID = 0 AND OtherID = 0 – Kusanagi 2013-03-03 20:26:45

+0

@Kusanagi。 。 。是的,你必須寫出字段。如果這是一個問題,請執行以下操作:'從information_schema.columns中選擇column_name,其中table_name ='table'',將結果轉儲到Excel中,使用逗號將其格式化,然後從該字符串中創建查詢。 – 2013-03-03 20:28:40