2013-07-09 3 views
0

У меня есть таблица с 10 номерами полей (скажем, F1, F2... F10).Поиск по номерам SQL и цифр

Теперь у меня есть 4 номера (N1, N2, N3, N4).

Я должен найти, будут ли эти 4 цифры появляться где-либо в приведенной выше таблице. Например, если F2 = Н4 и F1 = N2, и Рх = N3 и Fy = N1 (любой заказ, любая комбинация).

Мне было интересно, есть ли быстрый способ сделать это через SQL или это только способ написать looooong комбинацию selects (я не уверен, что смогу даже закончить, что в этой жизни).

ответ

1

Here is SQLFiddel Demo

Ниже приведен пример запроса

select * from Temp 
where 'N1' in (F1,F2,F3,F4,F5,F6,F7,F8,F9,F10) 
    and 'N2' in (F1,F2,F3,F4,F5,F6,F7,F8,F9,F10) 
    and 'N3' in (F1,F2,F3,F4,F5,F6,F7,F8,F9,F10) 
    and 'N4' in (F1,F2,F3,F4,F5,F6,F7,F8,F9,F10) 
+0

Спасибо, это прекрасно. Я использовал что-то в строках «select (« | »|| F1 ||" | "|| F2 || ...) как комбо, где комбо вроде«% | 22 |% »и комбо вроде«% | 26 |% "и ... ', но это намного лучше, спасибо снова. – Kajko

1

Один из способов сделать это (если ваша база данных поддерживает его) - это сворачивать данные, чтобы каждый из 10 столбцов имел свою собственную строку.

Так

ID F1 F2 F3 .. Fn 
1 1 2 3  10 

Становится

ID F 
1 1 
1 2 
1 3 
.. 
1 10 

Теперь вы можете запросить для существования данного значения F против одного столбца, который упрощает вещи немного.

SQL Server поддерживает эту функциональность Using PIVOT and UNPIVOT

Смежные вопросы