MYSQL - 从两列返回不同的其他值,如果其中任何一列中包含X

MYSQL - 从两列返回不同的其他值,如果其中任何一列中包含X

问题描述:

我有以下数据表中的MySQLMYSQL - 从两列返回不同的其他值,如果其中任何一列中包含X

C1 C2 //columns 1 & 2 
XX AA 
XX AB 
AD XX 
XX AC 
XX AA 
AA XX 
AC XX 

我要寻找的是返回以下结果的查询字符串(没有被订购)

AA 
AB 
AC 
AD 

甲不同(唯一)的“其他”列中的值存在于时无论是在表的那些列的包含XX

任一列的列表这是possib乐?

+0

你尝试过这么远吗? –

SELECT DISTINCT * 
FROM (SELECT C2 
     FROM table1 WHERE C1='XX' 

     UNION 

     SELECT C1 
     FROM table1 WHERE C2='XX') t; 
+0

谢谢伟大工程 –

您可以使用下面的查询:

SELECT DISTINCT IF(C1 <> 'XX', C1, C2) 
FROM mytable 
WHERE 'XX' IN (C1, C2); 

Demo here

+0

完全按照需要工作谢谢,是否可以维护此结果集,同时添加第三列时间戳,显示每个不同结果的该列的最新时间戳?我尝试了SELECT DISTINCT IF(C1 'XX',C1,C2),时间戳 FROM mytable WHERE'XX'IN(C1,C2)order by timestamp desc and it gave me duplicates again –

+0

@RayAndison'DISTINCT' is应用于'SELECT'子句中的* all *字段。 –

+0

好的,谢谢,我将针对您的第一个查询的每个不同结果运行一个嵌套的第二个查询,该查询会为每个结果请求最新的时间戳。即SELECT timestamp FROM mytable,其中C1 ='firstqueryresult'|| C2 ='firstqueryresult'ORDER BY timestamp DESC,然后为每个应用第一个结果,这应该得到我需要的结果。问候 ;) –