簡體   English   中英

如何從同一表中選擇具有多個別名的同一列?

[英]How to select same column with multiple alias name from same table?

我需要從表中選擇以下組合的值

SELECT Details FROM  Avenger   WHERE Id = '1' AND KEY LIKE '11AX';
SELECT Details FROM  Avenger   WHERE Id = '1' AND KEY LIKE '34XA';
SELECT Details FROM  Avenger   WHERE Id = '1' and KEY = '11AZ';
SELECT Details FROM  Avenger   WHERE Id = '1' AND KEY LIKE '11ZA';

在單個查詢中,我知道我可以使用

SELECT * FROM Avenger WHERE ID='1';

但是我需要使用所有選定的值,並在單個查詢中將其分配給“ 四變量”

我可以使用任何想法或解決方案嗎?

Id  Key Details
1   11AX    Mark 
1   34XA    Bruce 
1   11AZ    Mr. Green
1   11ZA    Hulk
2   11AX    Robert jr.
2   34XA    Toney 
2   11AZ    Iron Man
2   11ZA    Arrogant
3   11AX    Thor
3   34XA    Asgard
3   11AZ    God
3   11ZA    Hamer

我們可以嘗試在此處交替使用REGEXP_LIKE

SELECT *
FROM yourTable
WHERE Id = '1' AND REGEXP_LIKE("KEY", '11AX|34XA|11AZ|11ZA')

實際上,我不確定您是否打算在原始查詢中使用LIKE 您可能真的只想這樣做:

SELECT *
FROM yourTable
WHERE Id = '1' "KEY" IN ('11AX', '34XA', '11AZ', '11ZA')

我認為您需要一個case表達:

select details,
       (case when key like '11AX' then 1
             when key like '34XA' then 2
             when key like '11AZ' then 3
             when key like '11ZA' then 4
        end) as flag
from avenger a
where id = 1;

如果只想使用一個表達式選擇值,請從in開頭:

where id = 1 and key in ('11AX', '34XA', '11AZ', '11ZA')

如果要將值作為單個字符串傳遞,則regexp_like()可以工作:

where id = 1 and regexp_like(key, '^11AX|34XA|11AZ|11ZA$')

兩個注意事項:

  • 該模式已錨定,因此僅匹配完整key
  • regexp_like()通常會禁止使用索引,因此對於性能而言, =in是更好的選擇。

也許您打算:

select max(case when key like '11AX' then details end) as deails_11ax,
       max(case when key like '34XA' then details end) as details_34XA,
       max(case when key like '11AZ' then details end) as details_11AZ,
       max(case when key like '11ZA' then details end) as details_11AZ
from avenger a
where id = 1;

這將返回一行包含四列。

我知道您想要這樣做:

select 
    (SELECT Details FROM  Avenger   WHERE Id = '1' AND KEY LIKE '11AX') as var1,
    (SELECT Details FROM  Avenger   WHERE Id = '1' AND KEY LIKE '34XA') as var2,
    (SELECT Details FROM  Avenger   WHERE Id = '1' and KEY = '11AZ') as var3,
    (SELECT Details FROM  Avenger   WHERE Id = '1' AND KEY LIKE '11ZA') as var4
    from dual

還有一個樞軸選項

暫無
暫無

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

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