簡體   English   中英

sql查詢根據匹配的列返回單個值

[英]sql query to return single value based on column it matches

我有一個要求,如果查詢字符串匹配column1,則返回1。如果它匹配2列,則返回2,否則,如果匹配3列則返回3。

表strunctre:

col1   col2    col3

11      12       13
22      23       24

如果我的查詢字符串是23,那么我期望它的返回值2與col2匹配。

如下所示:

select 1 
from table1 
where col1=querystring 
      and orderid=xxx 
      or select 2 from table1 
         where col2=querystring 
               and orderid=xxx 
               or select 3 from table1 
                  where col3=querystring  and orderid=xxx 

基本上我期待一個查詢,該查詢根據匹配的列返回單個值。

因為我的數據庫技能不是很好,所以它在SQL中可行嗎?

非常感謝您的幫助。

有兩種方法。 如果保證一次最多匹配一列,則UNION將起作用:

SELECT 1 AS SomeCol 
FROM   table1 
WHERE  col1 = querystring 
       AND orderid = xxx 
UNION 
SELECT 2 
FROM   table1 
WHERE  col2 = querystring 
       AND orderid = xxx 
UNION 
SELECT 3 
FROM   table1 
WHERE  col3 = querystring 
       AND orderid = xxx; 

如果可能發生多個匹配,則這是另一種方法(請注意,優先級現在是col1,col2,col3等):

SELECT CASE 
         WHEN col1 = querystring THEN 1 
         WHEN col2 = querystring THEN 2 
         WHEN col3 = querystring THEN 3 
       END AS SomeCol 
FROM   table1 
WHERE  orderid = xxx; 

請嘗試使用case

declare @var int
set @var=23

select 
    case @var when col1 then 1
            when col2 then 2
            when col3 then 3 end
from YourTable 
where 
    col1=@var OR 
    col2=@var OR 
    col3=@var

嘗試在查詢中使用IF-ELSE條件,並檢查傳遞的參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM