Ошибка внутреннего соединения MySQL - PullRequest
0 голосов
/ 15 февраля 2012

Таблица

ID  W1  W2
1   a   q
2   a   w
3   b   r
4   c   t

Я хотел бы получить с помощью одного оператора SQL запрос к таблице с помощью W2 и получить W2 взамен, где W1 совпадает.

т.е.:

запросить таблицу, запросить 'q'.q имеет «a» для его w1, поэтому я хочу привести w2 строк, которые также имеют «a» в их w1.

Как мне этого добиться?Я верю, что это внутреннее соединение, но я терплю неудачу.

Спасибо

Ответы [ 3 ]

4 голосов
/ 15 февраля 2012

Для чего-то простого, подобного этому, вложенный запрос может быть проще (и, вероятно, будет таким же быстрым или быстрым, если вы получите случайные мультипликативные результаты от объединения):

SELECT * FROM TableName WHERE W1 IN (SELECT W1 FROM TableName WHERE W2='q')

Вы действительно могли бытакже выполните это с помощью внутреннего соединения.

Неявно:

SELECT * FROM TableName t1, TableName t2
WHERE t1.W1=t2.W1
AND t1.W2='q'

Вкл. явно:

SELECT * FROM TableName t1
INNER JOIN TableName t2
ON t1.W1=t2.W1
WHERE t1.W2='q'
1 голос
/ 15 февраля 2012
SELECT ID,
CASE
    WHEN W1=W2 THEN W1
    ELSE W2
END CASE
FROM Table
1 голос
/ 15 февраля 2012
SELECT t2.W2
    FROM YourTable t1
        INNER JOIN YourTable t2
            ON t1.W1 = t2.W1
    WHERE t1.W2 = 'q'
...