У меня аналогичная структура таблицы, как показано ниже

enter image description here

Теперь я хочу написать запрос ( без использования внутреннего запроса ) и найти все те числа, у которых есть условие вроде (значение 1 = A и значение 2 = B) и (значение 1 = B и значение 2 = A).

Средство Вроде обратного случая, когда число имеет как value1, так и value2, имеющие A и B.

Таким образом, в данном случае мой запрос будет равен 1 и 4.

0
Dhruv Bansal 15 Май 2014 в 15:16

3 ответа

Лучший ответ

Если вы не хотите повторять повторяющиеся строки, должно работать следующее:

mysql> select a.* from tbl_so_q23676640 a
    ->  join tbl_so_q23676640 b
    ->  on a.v1 = b.v2 and a.v2 = b.v1
    -> where a.n=b.n
    -> group by a.n, a.v1, a.v2
    -> ;
+------+------+------+
| n    | v1   | v2   |
+------+------+------+
|    1 | a    | b    |
|    1 | b    | a    |
|    4 | a    | b    |
|    4 | b    | a    |
+------+------+------+
4 rows in set (0.00 sec)
1
Ravinder Reddy 15 Май 2014 в 11:29

Пожалуйста, попробуйте этот запрос:

select t1.NUMBER from mytable t1
join mytable t2 on t1.NUMBER = t2.NUMBER
where t1.Value1 = 'A' and t1.Value2 = 'B' and t2.Value1 = 'B' and t2.Value2 = 'A'

Вы можете проверить результат: http://sqlfiddle.com/#!2/a5e7ae/1

2
Negev Nomad 15 Май 2014 в 11:33
SELECT NUMBER FROM MYTABLE WHERE value1 = 'A' and value2 = 'B'
INTERSECT
SELECT NUMBER FROM MYTABLE WHERE value2 = 'A' and value1 = 'B';
1
A Nice Guy 15 Май 2014 в 12:00