2017-05-01 6 views
0

Ich arbeite an einem Projekt und für den nächsten Teil muss ich die Ergebnisse von 2 Abfragen vergleichen.C# MySQL - Unterschied zwischen 2 Abfragen

Szenario: in einer Tabelle Ich behalte alle Spieler im Team. in einer anderen Tabelle sind nur die, die der Trainer für das Spiel aufgerufen hat.

I, die Spieler wissen wollen, aus

Was

wurden links ist der beste Ansatz für mich in Anspruch nehmen?

könnte ich mit so etwas wie

(Query for Selecting all players) 
    EXCEPT 
    (Query for Selecting the ones called by the coach) 

Tabellen

alle Spieler

Number | Name 
    ------ | ------ 
    23  | john 
    24  | Mario 

ausgewählte Spieler

Number | Name 
    ------ | ------ 
    23  | john 

ich es das Ergebnis geben wollen, dass Mario fehlt von dies der ausgewählte Spieler Tabelle

+2

Fügen Sie Tabellen mit Daten und erwartetem Ergebnis hinzu. Es macht es viel einfacher zu verstehen, was Sie wollen. – Zulatin

Antwort

1

Mit NOT EXISTS

select * from all_players p1 
where not exists 
(select 1 from players p2 
where p1.number=p2.number 
and p1.name=p2.name 
-- and -- You can add other columns here 
) t 

Mit LEFT JOIN

select p1.* from all_players p1 
left join players p2 
on p1.number=p2.number 
and p1.name=p2.name 
-- and p1.last_name=p2.last_name --add other columns 
where 
(p2.number is null 
and p2.name is null 
-- and p2.last_name is null --add other columns 
) 

Mit IN erhalten, wenn es gleiche Schlüssel passend sein

select * From all_players p 
where number not in (select number from players) 
+0

Ich werde die gleiche Frage machen, die ich zu den anderen gemacht habe ok scheint das zu sein, was ich suche, aber in meinem Fall, sagen wir den Nachnamen der Spieler sind in einer anderen Spalte, so dass 2 Johns mit verschiedenen Nachnamen existieren können, wie vergleiche ich die jetzt 4 Felder Ich möchte mit dem ersten und zweiten Namen kombiniert vergleichen – Cacheira

+0

JA! Die linke Join-Methode funktioniert dank! Habe die anderen nicht probiert, da ich schon was habe, was ich brauche. Wenn jemand versucht und gelingt mit den anderen Methoden kommentieren – Cacheira

0

Benutzer u kann Ihr Ergebnis

Select players from players_table where player not in (select coach_selected_player from coach_selected_player_table)

+0

ok das scheint was zu suchen, aber in meinem Fall, sagen wir, der Nachname der Spieler sind in einer anderen Spalte, so dass 2 Johns mit verschiedenen Nachnamen existieren kann, wie vergleiche ich die jetzt 4 Felder – Cacheira

+0

dann ein weiteres hinzufügen Zustand wie 'oder' oder 'und' und vergleichen Sie ein anderes Feld zu – Jenish