簡體   English   中英

使用DISTINCT和UNION在SQL查詢中獲取字段名稱

[英]Get field name in SQL query with DISTINCT and UNION

我有以下查詢:

SELECT DISTINCT(uniq)
FROM
(
    SELECT sex AS uniq FROM type4
    UNION
    SELECT fason AS uniq FROM type4
    UNION
    SELECT color AS uniq FROM type4
    UNION
    SELECT size AS uniq FROM type4
) AS Temp

它運作得很好,它返回:

[uniq] => some unique value

是否可以知道此唯一值來自哪個列? 我的意思是這樣的:

[uniq] => some unique value
[from] => size

我怎樣才能做到這一點?

您的原始查詢不需要子查詢也不需要DISTINCT 你可以使用:

SELECT sex AS uniq FROM type4
UNION
SELECT fason FROM type4
UNION
SELECT color FROM type4
UNION
SELECT size FROM type4

現在針對您的問題,如果四列沒有重疊值,您可以使用:

  SELECT DISTINCT sex AS uniq
                , 'sex' AS FromColumn 
  FROM type4
UNION ALL
  SELECT DISTINCT fason 
                , 'fason' 
  FROM type4
UNION ALL
  SELECT DISTINCT color 
                , 'color' 
  FROM type4
UNION ALL
  SELECT DISTINCT size 
                , 'size' 
  FROM type4
SELECT DISTINCT(uniq)
FROM
(
    SELECT (sex + ' 1') AS uniq FROM type4
    UNION
    SELECT (fason + ' 2') AS uniq FROM type4
    UNION
    SELECT (color + ' 3') AS uniq FROM type4
    UNION
    SELECT (size + ' 4') AS uniq FROM type4
) AS Temp

然后你可以使用substring從右邊刪除最后2

暫無
暫無

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

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