0

我有2列如下:

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

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

目前我正在查询这个:

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

但我在 A 和 B 两边都有 2 列包含数字 7。

我确定有办法得到我想要的,但我不知道如何用谷歌搜索!!

4

6 回答 6

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)

在这里看小提琴。

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

WHERE 7 IN (A, B)

WHERE A=7 XOR B=7
于 2013-02-13T12:10:50.970 回答
2

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

SELECT A FROM mytable WHERE B=7
UNION
SELECT B FROM mytable WHERE A=7
于 2013-02-13T12:08:44.577 回答
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 演示在这里

于 2013-02-13T12:34:59.373 回答
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;

在 sqlfiddle 演示

于 2013-02-13T12:27:42.390 回答
0

尝试这个

SELECT A as Single FROM mytable WHERE B=7   UNION   
SELECT B  as Single FROM mytable WHERE A=7 ORDER BY Single;
于 2013-02-13T12:16:57.547 回答
0

你必须试试这个代码..

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

此查询必须对您有所帮助。

于 2013-02-13T13:04:32.223 回答