извлечение разных значений из одного и того же столбца, когда известно только одно значение - PullRequest
0 голосов
/ 29 ноября 2018

у меня есть следующая таблица

     +-----+-------+
     |col 1| col 2 |
     +-----+-------+
     |   a |   b   |
     |   b |   a   |
     |   a |   d   |
     |   c |   b   |

я знаю значение a, теперь я хочу использовать это значение для запуска запроса для получения идентификатора, где a = b и где b = a ..Я ожидаю, что результат будет

     +-----+-------+
     |col 1| col 2 |
     +-----+-------+
     |   a |   b   |
     |   b |   a   |

спасибо

Ответы [ 3 ]

0 голосов
/ 29 ноября 2018
DROP TABLE IF EXISTS my_table;

CREATE TABLE my_table
(col1 CHAR(1) NOT NULL
,col2 CHAR(1) NOT NULL
,PRIMARY KEY(col1,col2)
);

INSERT INTO my_table VALUES
('a','b'),
('b','a'),
('a','d'),
('c','b');

SELECT x.* 
  FROM my_table x 
  JOIN my_table y 
    ON y.col1 = x.col2 
   AND y.col2 = x.col1 
 WHERE 'a' IN (x.col1,x.col2);
+------+------+
| col1 | col2 |
+------+------+
| b    | a    |
| a    | b    |
+------+------+
2 rows in set (0.00 sec)
0 голосов
/ 29 ноября 2018

это будет работать:

    select * from d061_1;

        a   b
        b   a
        a   d
        c   b
    select m.* from d061_1 m ,d061_1 n where m.col2=n.col1 and m.col1=n.col2;
    output:
    b   a
    a   b
0 голосов
/ 29 ноября 2018

Запись предложения Where, где b = a и a = b, практически одинакова.Используйте этот пример, если a = 5 и b = 5.

b = a означает 5 = 5, a = b означает 5 = 5

Я думаю, что оба они одинаковы.Выполнение запроса ниже должно дать вам нужную потребность:

SELECT * FROM table_name WHERE `col1` = `col2` AND `col1` = a;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...