2017-02-02 1 views
0

Ich habe zwei Tabellen (Tabelle1 und Tabelle2). Ich möchte das Benutzerkennwort aus Tabelle1 oder Tabelle2 auswählen, wenn der Benutzername in einer der Tabellen vorhanden ist.Mysql - Wählen Sie einen Wert, wenn es in Tabelle1 existiert, andernfalls, wenn es nicht, wählen Sie es aus Tabelle2

Nehmen Sie außerdem an, dass der Benutzername für beide Tabellen eindeutig ist, so dass es keine Duplikate gibt.

Sudo Code

SELECT table1.password 
    FROM table1 
WHERE table1.username = ? 

OR #(if not found) 

SELECT table2.password 
    FROM table2 
WHERE table2.username = ? 

Wo die Wild Card? = der angegebene Benutzername

Ich möchte nur eine Spalte mit dem Passwortwert zurückgegeben.

+0

See http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-very-simple-sql-query – Strawberry

Antwort

1

Wenn Sie sicher sind, dass der Benutzername in beiden Tabellen eindeutig zuzuordnen sind, können Sie die union-Klausel verwenden:

SELECT table1.password 
    FROM table1 
WHERE table1.username = ? 

UNION 

SELECT table2.password 
    FROM table2 
WHERE table2.username = ? 
1

so etwas wie dies nur 1 Zeile mit dem üassword geben

SELECT result.password 
FROM (
     SELECT 1 AS id,table1.password 
     FROM table1 
     WHERE table1.username = ? 
    UNION ALL 
     SELECT 2,table2.password 
     FROM table2 
    WHERE table2.username = ? 
) AS result 
ORDER BY id 
LIMIT 1; 
Verwandte Themen