PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Wybór z Bazy Danych na podstawie listy unikalnych par

Myślę, że Postgresql ma najbardziej eleganckie rozwiązanie:

SELECT  *
FROM    T
WHERE   ("Key", "Value") IN (('B', 'Alpha'), ('A', 'Charlie'));

Przykład SQL Fiddle

W SQL-SERVER 2008 i nowszych możesz użyć VALUES budować swoje krotki:

SELECT  T.*
FROM    T
        INNER JOIN
        (   VALUES
                ('B', 'Alpha'),
                ('A', 'Charlie')
        ) v (Key, Value)
            ON v.Key = T.Key
            AND v.Value = T.Value

Przykład SQL Fiddle

Lub w ramach procedury możesz utworzyć typ pary klucz-wartość i przekazać to jako parametr:

CREATE TYPE KeyValuePair AS TABLE ([Key] VARCHAR(1), [Value] VARCHAR(7));

DECLARE @T AS KeyValuePair
INSERT @T 
VALUES
    ('B', 'Alpha'),
    ('A', 'Charlie')


SELECT  T.*
FROM    T
        INNER JOIN @T v
            ON v.[Key] = T.[Key]
            AND v.Value = T.Value;

Przykład SQL Fiddle

W przypadku MySQL myślę, że być może będziesz musiał po prostu zbudować to za pomocą AND/OR

SELECT  *
FROM    T
WHERE   (`Key` = 'A' AND `Value` = 'Charlie')
OR      (`Key` = 'B' AND `Value` = 'Alpha')

Przykład SQL Fiddle

Moja wiedza na temat innych DBMS jest ograniczona, więc jeśli nie jest to jeden z powyższych, przepraszam, nie mogę być bardziej pomocny.

EDYTUJ (Z pomocą a_horse_with_no_name )

Składnia PostgreSQL działa również dla Oracle (i myślę, że DB2)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Szczegółowe informacje na temat dostawców chmury:PostgreSQL na Microsoft Azure

  2. Błąd Postgres po aktualizacji TimescaleDB na Ubuntu:plik nie został znaleziony

  3. django - zagregowane klucze specyficzne dla pola json i kolejność według agregacji

  4. Rama encji PostgreSQL

  5. Generuj unikalne losowe ciągi w plpgsql