0

我不知道如何解决这种情况。问题在于我用来从 zip_codes 表中检索位置的 OR 运算符。例如,如果有人只输入“NY”作为输入,我只想检索这个字段。

表数据是这样的:

+------+-------+--------------------------------------+
| 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” - 只是邮政编码字段等。

是的,我可以从一堆 if 中在 PHP 中设置它,但也许是一些我不知道的 SQL 查询

4

1 回答 1

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
于 2012-07-25T10:06:02.040 回答