Heim  >  Fragen und Antworten  >  Hauptteil

SQL: So fragen Sie eine verbundene Tabelle mit einem zusammengesetzten Schlüssel ab, indem Sie Zeilen und Spalten vergleichen

Ich habe eine MySQL-Verbindungstabelle user_connections, die die users-Tabelle mit den folgenden Spalten abbildet: user_from und user_to >, die beide Fremdschlüssel in der users-Tabelle sind.

Meine Logik ist, dass wenn id1 eine Anfrage an id2 sendet, es sich in diesem Fall um eine ausstehende Anfrage handelt. Die Anfrage gilt nur dann als genehmigt, wenn sie von id2 angenommen wird, wodurch die oben genannten Muster (id1, id2) und (id2, id1) in der Tabelle (rotes Kästchen) angezeigt werden.

Meine Frage ist also, wie ich die Tabelle user_connections abfragen kann, damit ich alle ausstehenden Anfragen basierend auf id1

(blaues Feld) abrufen kann.

Ich weiß nicht, wie ich das machen soll. Daher wäre ich für jede Hilfe dankbar. Vielen Dank im Voraus.

P粉358281574P粉358281574402 Tage vor482

Antworte allen(1)Ich werde antworten

  • P粉287345251

    P粉2873452512023-09-14 20:36:03

    如果您正在查找 user_connections 表定义的所有待处理请求,那么您需要对该表与其自身进行左外连接,如下所示:

    架构 (MySQL v5.7)

    create table user_connections (
      user_from int,
      user_to int,
      primary key(user_from, user_to)
      );
      
      insert into user_connections(user_from, user_to) values(1, 2);
      insert into user_connections(user_from, user_to) values(2, 1);
      insert into user_connections(user_from, user_to) values(67, 1);
      insert into user_connections(user_from, user_to) values(68, 1);
      insert into user_connections(user_from, user_to) values(69, 1);
      insert into user_connections(user_from, user_to) values(70, 1);

    查询#1

    select uc1.user_from, uc1.user_to from
    user_connections uc1 left join
    user_connections uc2 on uc2.user_from = uc1.user_to and uc2.user_to = uc1.user_from
    where uc2.user_from is null;
    user_from user_to
    67 1
    68 1
    69 1
    70 1

    Antwort
    0
  • StornierenAntwort