Heim > Fragen und Antworten > Hauptteil
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粉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 |