如何在一列中合并2个数据库结果

时间:2013-02-13 12:06:07

标签: mysql sql

我有两列如下:

A  |  B
---|---
7  |  1
7  |  2
3  |  7
4  |  5
-------

我想获得包含(1,2,3)的1列。

目前我正在查询:

SELECT  `A` ,  `B` 
FROM  `mytable` 
WHERE  `A` =7
OR  `B` =7

但是我在A和B两边都得到了包含数字7的2列。

我确定有办法得到我想要的但我不知道如何谷歌那个!!

6 个答案:

答案 0 :(得分:3)

你可以用这个:

SELECT
  case when A=7 then B else A end
FROM
  yourtable
WHERE
  7 IN (A, B)

如果您想要一个列,可以使用:

SELECT
  GROUP_CONCAT(case when A=7 then B else A end
               ORDER BY case when A=7 then B else A end)
FROM
  yourtable
WHERE 7 IN (A, B)

请参阅小提琴here

如果A和B的值同时为7,并且您想跳过该行,则可以替换:

WHERE 7 IN (A, B)

WHERE A=7 XOR B=7

答案 1 :(得分:2)

不确定你需要什么,但我猜是这样的:

SELECT A FROM mytable WHERE B=7
UNION
SELECT B FROM mytable WHERE A=7

答案 2 :(得分:1)

我认为你在寻找这个

   SELECT myresult from (

          SELECT A myresult FROM Table1 WHERE A IN (1,2,3)
          UNION
          SELECT B myresult FROM Table1 WHERE B IN (1,2,3)
                   )t
   ORDER BY myresult

这将出局:

 MYRESULT
   1
   2
   3

SQL DEMO HERE

答案 3 :(得分:0)

试试这个

SELECT A as Single FROM mytable WHERE B=7   UNION   
SELECT B  as Single FROM mytable WHERE A=7 ORDER BY Single;

答案 4 :(得分:0)

如果你期望结果为1,2,3,请在下面使用。

SELECT colB as NewCol FROM tableName WHERE colA=7
UNION
SELECT colA as NewCol FROM tableName WHERE colB=7;

如果您想要两个列,只需使用

SELECT colA, colB FROM tableName WHERE colA=7 OR colB=7;

Demo at sqlfiddle

答案 5 :(得分:0)

你必须尝试这个代码..

SELECT b as value FROM users WHERE a='7'
UNION All
SELECT a as value FROM users WHERE b='7'

此查询必须为您提供帮助。