我想根据条件在新列中合并2列。请检查以下查询。我尝试了什么。
SELECT
`ContactPers`.`contact_persID`,
`ContactPers`.`persID`,
`ContactPers`.`contactID`
FROM `bdrplus`.`contact_pers` AS `ContactPers`
WHERE ((`ContactPers`.`persID` = 55) OR (`ContactPers`.`contactID` = 55))
AND `ContactPers`.`etat` = 1
输出:
contact_persID persID contactID
18 90 55
19 55 56
20 55 61
23 55 67
所需的输出类似于(在newColumn中不需要55,因为它在WHERE子句中,参见上面的查询。想要根据条件组合persID和contactID。)
contact_persID persID contactID newColumn
18 90 55 90
19 55 56 56
20 55 61 61
23 55 67 67
-Thanks
答案 0 :(得分:1)
我不确定MySql方面的内容。以下是我将如何在SQL中执行此操作:
SELECT
`ContactPers`.`contact_persID`,
`ContactPers`.`persID`,
`ContactPers`.`contactID`,
CASE `ContactPers`.`persID`
WHEN 55 THEN `ContactPers`.`contactID`
ELSE `ContactPers`.`persID`
END AS newColumn
FROM `bdrplus`.`contact_pers` AS `ContactPers`
WHERE 55 IN (`ContactPers`.`persID`, `ContactPers`.`contactID`)
AND `ContactPers`.`etat` = 1
答案 1 :(得分:0)
CASE
语句可让您逐行进行决策。还有一个IF
语句几乎相同,但我建议CASE
,因为它有更广泛的支持(例如Oracle,SQL Server,Teradata等):
SELECT
contact_persID,
persID,
contactID,
CASE WHEN contactID = 55 THEN persID ELSE contactID END AS newColumn
FROM dbrplus.contact_pers
WHERE (PersID = 55 OR contactID = 55)
AND etat = 1
答案 2 :(得分:0)
单表查询的列名中不需要FQN。
SELECT
contact_persID,
persID,
contactID,
CASE persID WHEN 55 THEN contactID ELSE persID END newColumn
FROM
.......