2011-06-16 52 views
2

我有兩個表在我的數據庫中:en_pagemwpage。兩個列都有page_title列。我想要的是選擇兩個page_title值匹配的數據。MySQL複雜的SQL查詢顯示空列值,其中表列不匹配

例如

SELECT EN.page_title ENP, MW.page_title MWP 
FROM en_page AS EN, mwpage AS MW 
WHERE EN.page_title = 'Main_Page' 
AND MW.page_title = 'Main_Page' 
LIMIT 0 , 30 

此查詢工作正常,並返回以下數據:

ENP |  MWP 
Main_Page| Main_Page 

但我有一種特殊情況。如果table.page_title值中的任何一個與條件不匹配,則查詢不會返回任何結果集。我希望它仍然返回結果集凡不匹配的表應該是空的,像下面這樣:

ENP |  MWP 
Main_Page| 

我不知道如何做到這一點。誰能幫忙?

回答

4

試試這個

SELECT EN.page_title ENP, MW.page_title MWP 
FROM 
    en_page AS EN 
    LEFT OUTER JOIN mwpage AS MW ON EN.page_title = MW.page_title 
WHERE EN.page_title = 'Main_Page' 
LIMIT 0 , 30 
+0

perfect !,儘管它返回null,對於空值,但我可以使用!,謝謝 – Shaheer 2011-06-16 10:39:36

+0

只有一個問題,如果我需要匹配更多,我需要更改哪些內容表? – Shaheer 2011-06-16 10:42:31

+0

都取決於你想如何匹配它們。添加更多的JOIN將會做到這一點。例如。 FROM en_page AS EN LEFT OUTER JOIN mwpage AS兆瓦EN.page_title = MW.page_title LEFT OUTER JOIN someOtherTable其他ON EN.page_title = other.page_title – joostschouten 2011-06-16 10:46:24

2
SELECT EN.page_title ENP, MW.page_title MWP 
FROM en_page AS EN, mwpage AS MW 
WHERE (EN.page_title = 'Main_Page' OR EN.page_title='') 
AND (MW.page_title = 'Main_Page' OR MW.page_title = '')  
LIMIT 0 , 30 
+0

這並不工作,因爲沒有任何表中沒有空PAGE_TITLE,我不能做任何一個:( – Shaheer 2011-06-16 10:33:22

+0

嘗試用「IS NULL」替換「=」'「...例如:WHERE(EN.page_title ='Main_Page'或EN.page_title IS NULL) – Flimzy 2011-06-16 10:36:42

+0

它返回一個空的結果設置,和「joostsc houten的「解決方案適用於我,感謝 – Shaheer 2011-06-16 10:40:17

2

爲了處理NULL情況下,只需使用一個CASE WHEN

SELECT EN.page_title ENP, CASE WHEN MW.page_title IS NULL THEN '' ELSE MW.page_title END MWP 
FROM 
    en_page AS EN 
    LEFT OUTER JOIN mwpage AS MW ON EN.page_title = MW.page_title 
WHERE EN.page_title = 'Main_Page' 
LIMIT 0 , 30 
+0

它仍然在phpmyadmin中顯示NULL, – Shaheer 2011-06-16 10:48:36

+0

我正在測試這個,它不,你確定這是一個NULL?例如嘗試改變'THEN''',例如'THEN'test123''。 – VAShhh 2011-06-16 10:55:49

+0

它確實在phpmyadmin中顯示NULL,但在PHP腳本中,它按預期工作! – Shaheer 2011-06-16 11:37:20

相關問題