簡體   English   中英

MySQL的。 選擇列作為column1,在其中…將所有並集選擇列作為column2,在其中……僅查看column1(而不是column2)

[英]mysql. Select column as column1 where… union all select column as column2 where… See only column1 (not column2)

這里放置示例http://sqlfiddle.com/#!9/af548/2

有桌子

NumberRenamed | TopicName | LanguageId    

1               Topic en      1
2               Topic es      2
3               Topic es1     2

詢問

SELECT `TopicName` AS `TopicName1` FROM `topics` WHERE `LanguageId` = 1

UNION ALL

SELECT `TopicName` AS `TopicName2` FROM `topics` WHERE `LanguageId` = 2

;

期望得到數組,像

Array
(
[0] => Array
    (
        [TopicName1] => Topic en
    )
[1] => Array
    (
        [TopicName2] => Topic es
    )
[2] => Array
    (
        [TopicName2] => Topic es1
    )

)

但是看

Array
(
[0] => Array
    (
        [TopicName1] => Topic en
    )
[1] => Array
    (
        [TopicName1] => Topic es
    )
[2] => Array
    (
        [TopicName1] => Topic es1
    )

)

僅查看[TopicName1] (無[TopicName2]

我的查詢出了什么問題(需要更正什么)?

如果使用UNION則列名將僅取自第一個“ select”語句。 您的查詢沒有錯。

您可以嘗試使用SQL CASE表達式

SQL小提琴

SELECT CASE `LanguageId` 
     WHEN '1' THEN 'TopicName1'
     WHEN '2' THEN 'TopicName2'
     END AS Topic,
    `TopicName`
 FROM Topics;

獲取輸出為

|      Topic | TopicName |
|------------|-----------|
| TopicName1 |  Topic en |
| TopicName2 |  Topic es |
| TopicName2 | Topic es1 |

暫無
暫無

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

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