SQL: Cara untuk menanyakan jadual bercantum dengan kunci komposit dengan membandingkan baris dan lajur
P粉358281574
P粉358281574 2023-09-13 23:28:58
0
1
528

Saya mempunyai jadual sambungan Mysql user_connections yang memetakan jadual users dengan lajur berikut: user_from dan user_to >, yang kedua-duanya adalah kunci asing dalam jadual users.

Logik saya ialah jika

id1 menghantar permintaan kepada id2, dalam kes ini ia akan menjadi permintaan yang belum selesai. Permintaan akan dianggap diluluskan hanya jika ia diterima oleh id2 yang akan memberikan corak di atas (id1, id2) dan (id2, id1) dalam jadual (kotak merah).

Jadi soalan saya ialah bagaimana untuk menanyakan jadual

user_connections supaya saya boleh mendapatkan semua permintaan yang belum selesai berdasarkan id1 (kotak biru)

Saya tidak tahu bagaimana untuk melakukan ini. Jadi sebarang bantuan akan dihargai. Terima kasih terlebih dahulu.

P粉358281574
P粉358281574

membalas semua(1)
P粉287345251

Jika anda mencari semua permintaan belum selesai yang ditakrifkan oleh jadual user_connections, maka anda perlu melakukan sambung luar kiri antara jadual itu dan jadual itu sendiri, seperti ini:

Seni bina (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);

Pertanyaan #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;
pengguna_daripada pengguna_kepada
67 1
68 1
69 1
70 1
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan