Получить последовательность данных из разных столбцов - PullRequest
0 голосов
/ 07 апреля 2010

Допустим, у меня есть таблица, содержащая следующие данные:

| id | t0 | t1 | t2 |
______________________
| 1  |  4 |  5 |  6 |
| 2  |  3 |  5 |  2 |
| 3  |  6 |  4 |  5 |
| 4  |  4 |  5 |  9 |
| 5  | 14 |  5 | 49 |

Я хочу получить все строки, содержащие 4, 5, 6 (независимо от положения чисел в таблицах), поэтому строка 1 &строка 3 будет выбрана.Как это сделать с помощью SQL-запроса?

Таблица содержит тысячи записей.

Ответы [ 3 ]

7 голосов
/ 07 апреля 2010

Вы можете сделать это так:

select *
 from table
where 4 in (t0, t1, t2) 
  and 5 in (t0, t1, t2) 
  and 6 in (t0, t1, t2)
0 голосов
/ 07 апреля 2010

Еще один «трудный» путь:

DECLARE @table TABLE (id int, t0 int, t1 int, t2 int)

INSERT INTO @table(id, t0, t1, t2) VALUES(1, 4, 5, 6)
INSERT INTO @table(id, t0, t1, t2) VALUES(2, 3, 3, 2)
INSERT INTO @table(id, t0, t1, t2) VALUES(3, 6, 4, 5)
INSERT INTO @table(id, t0, t1, t2) VALUES(4, 4, 5, 5)

SELECT * 
FROM @table
WHERE (t0+t1+t2) = 15
    AND t0 BETWEEN 4 AND 6
    AND t1 BETWEEN 4 AND 6
    AND t2 BETWEEN 4 AND 6
    AND t0 <> t1
0 голосов
/ 07 апреля 2010

Вы всегда можете сделать это «сложным» способом:

select * 
  from tbl 
 where (t0 = 4 AND t1 = 5 AND t2 = 6)
    or (t0 = 5 AND t1 = 6 AND t2 = 4)
    or (t0 = 6 AND t1 = 4 AND t2 = 5)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...