2017-06-13 5 views
0

Die folgende Abfrage wird die Datensätze suchen und geben nur die gefundenen Datensätze:mysql Rückkehr Aufzeichnungen und Anzeige gefunden, die waren nicht

"SELECT number, user, date FROM table1 WHERE number IN ('item1','item2')" 

Ergebnisse zurückgegeben:

| NUMBER | USER | DATE | 
------------------------ 
| item1 | you | 11-2 | 
------------------------ 

item1 war der einzige Rekord herausgefunden der 2 angefordert.

Gibt es eine Möglichkeit, alle Elemente zurückzugeben, auch wenn sie nicht in der Tabelle gefunden wurden?

Ich versuche Ergebnisse wie folgt zurück:

| NUMBER | USER | DATE | 
------------------------ 
| item1 | you | 11-2 | 
------------------------ 
| item2 | not found | 
------------------------ 

Ich versuche, so etwas wie die FEDEX-Tracking-Webseite zu imitieren. Sie können bis zu 30 Verfolgungsnummern eingeben und die Nummern identifizieren, die keine Ergebnisse zurückgegeben haben.

Ich habe eine ähnliche Frage gestellt, aber ich hoffe, dass jemand, der mit mysql vertraut ist, dies beantworten kann.

+0

Ich denke, was Sie wird zwei separate Abfragen sind gefragt - eine, die die Daten begrenzt, und eine, die eine SELECT * 'tut. Dann können Sie die Ausgabe innerhalb einer Bedingung verketten, basierend darauf, ob die Ergebnisse in der ersten Abfrage enthalten sind oder nicht. –

+0

Ich habe versucht, eine UNION zu verwenden und 2 separate Abfragen verwenden, aber die zweite Zeile gibt nur Zeilen für Datensätze zurück, die nicht gefunden werden. Ich hoffe das ergibt Sinn. –

+0

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

Antwort

1

Sie können eine CASE LOGIC in diesem Szenario verwenden:

Select distinct A.number 
,CASE WHEN b.user is null then 'not found' ELSE b.user END as USER 
,CASE WHEN b.date is null then 'not found' ELSE CAST(b.user as VARCHAR(10)) END as DATE 
FROM 
(
Select 'item1' as number 
UNION 
Select 'item2' as number 
) A 
LEFT OUTER JOIN 
FROM table1 b 
ON A.number = b.number 
Verwandte Themen