2012-07-25 52 views
0

我不知道如何解決這種情況。問題出在我用來從zip_codes表中檢索位置的OR運算符。例如,如果有人只輸入「NY」作爲輸入,我只想檢索該字段。SQL查詢使用OR運算符從關鍵字檢​​索匹配的字段

表的數據是這樣的:

+------+-------+--------------------------------------+ 
| zip | state | city         | 
+------+-------+--------------------------------------+ 
| 12345| NY | Schenectady       | 
+------+-------+--------------------------------------+ 

而且例如可能的輸入爲「NY」,所以我的查詢如下:

SELECT zip, state, city 
    FROM zip_codes 
WHERE name = 'NY' 
    OR zip = 'NY' 
    OR city ='NY' 
LIMIT 1 

我想找回剛剛在現場狀態在上述情況下,因爲這意味着用戶僅將狀態設置爲參考。如果他們進入「Schenectady」 - 城市領域,如果他們進入「12345」 - 只是郵政編碼領域等。

是的,我可以從一堆如果設置在PHP中,但也許是一些SQL查詢外我不知道

回答

4
select *, case when zip = 'NY' 
       then 'zip' 
       when name = 'NY' 
       then 'name' 
       when city = 'NY' 
       then 'city' 
      end as found 
from zip_codes 
where 'NY' in (name, zip, city) 
limit 1 
+0

是否有可能使更優雅的'哪裏'紐約'在(名稱,郵編,城市)'? – triclosan 2012-07-25 10:10:06

+0

好的。添加它。 – 2012-07-25 10:13:20

+0

非常,非常,非常感謝! :) – 2012-07-25 10:17:53