sql >> Databasteknik >  >> RDS >> Oracle

Det säger att jag inte har någon rad vald?

Det finns ett par sätt att göra detta:

Du kan använda en anti-join, till exempel:

SELECT m.MEMBERID,
       m.LASTNAME,
       m.FIRSTNAME
  FROM MEMBERS m
  WHERE m.MEMBERID NOT IN (SELECT DISTINCT MEMBERID
                             FROM CURRENTLOAN
                           UNION ALL
                           SELECT DISTINCT MEMBERID
                             FROM HISTORY);

Ett annat sätt (och min föredragna metod) att göra vad du vill är:

SELECT DISTINCT m.MEMBERID,
                m.LASTNAME,
                m.FIRSTNAME
  FROM MEMBERS m
  LEFT OUTER JOIN (SELECT DISTINCT MEMBERID
                     FROM (SELECT MEMBERID
                             FROM CURRENTLOAN
                           UNION ALL
                           SELECT MEMBERID
                             FROM HISTORY)) u
    ON u.MEMBERID = m.MEMBERID
  WHERE u.MEMBERID IS NULL;

Med tanke på de data du har visat den här frågan, liksom din ursprungliga fråga, bör dock returnera noll rader. SQLFiddle här

Observera att om du kommenterar det aktuella lånet till medlem 004, så returneras "Joe Brown" SQLFiddle här

Lycka till.




  1. Enkla SQL Server-funktioner för att lösa verkliga problem

  2. Hur man skapar vy i SQL

  3. Hur hittar jag en standardbegränsning med INFORMATION_SCHEMA?

  4. MySQL-svårigheter - Hiragana och Katakana behandlas som samma