Rumah > Artikel > pembangunan bahagian belakang > Perlu mengecualikan id yang terdapat dalam jadual pertama daripada jadual kedua
editor php Yuzai di sini untuk memperkenalkan kepada anda soalan tentang pemprosesan data. Apabila kita perlu mengecualikan id yang sudah wujud dalam jadual lain daripada satu jadual, kita boleh melakukannya melalui kaedah tertentu. Masalah ini sangat biasa dalam pemprosesan data. Penyelesaian ini boleh membantu kami mengatur dan memproses data dengan lebih baik, serta meningkatkan kecekapan dan ketepatan pemprosesan data. Dalam artikel seterusnya, kami akan memperincikan cara mencapai matlamat ini dengan menggunakan pernyataan pertanyaan khusus.
Guys, saya perlukan bantuan anda sekali lagi. Otak saya rosak dan saya tidak faham apa yang saya lakukan salah. Saya ada 2 meja
requests id string `json:"id"` userid string `json:"user_id"` status string `json:"status"`
students id string `json:"id"` userid string `json:"user_id"` requestid string `json:"request_id"` startdate time.time `json:"start_date"` enddate time.time `json:"end_date"`
Sebagai penerima saya mempunyai id pengguna dan saya perlu mencari semua permintaan pengguna antara tarikh mula dan tarikh tamat tetapi permintaan dengan status "dibatalkan" atau "ditolak" harus dikecualikan. Saya fikir saya boleh menggunakan join kiri tetapi ia tidak berfungsi seperti yang saya perlukan. Pada masa ini saya mempunyai pertanyaan berikut:
status := []string{"canceled", declined"} type Result struct { tableName struct{} `pg:"students"` ID string `json:"id"` UserID int `json:"user_id"` RequestID string `pg:"fk:request_id"` Status string `json:"status"` } var res []Result err := Model(&res). ColumnExpr("id, user_id, requests.status"). Where("user_id = ?", UseID). Where("start_date >= ? AND end_date <= ?", startDate, endDate). Join("LEFT JOIN requests ON requests.id = request_id"). WhereIn("requests.status IN (?)", status). Select()
Pada masa ini, saya menerima semua data daripada pelajar jadual untuk tarikh yang diperlukan, tetapi ia tidak dikecualikan daripada keputusan walaupun status dalam jadual permintaan ialah "Dibatalkan" atau "Ditolak". Jika anda memerlukan sebarang maklumat tambahan daripada saya untuk membantu saya, sila beritahu saya. Terima kasih atas sebarang komen dan cadangan.
Anda perlu memastikan anda menggunakan klausa where
dengan betul untuk mengecualikan permintaan dengan status "Dibatalkan" atau "Ditolak".
type Result struct { TableName struct{} `pg:"students"` ID string `json:"id"` UserID string `json:"user_id"` RequestID string `pg:"fk:request_id"` Status string `json:"status"` } var res []Result status := []string{"canceled", "declined"} err := Model(&res). ColumnExpr("students.id, students.user_id, students.request_id, requests.status"). Where("students.user_id = ?", UserID). Where("students.start_date >= ? AND students.end_date <= ?", startDate, endDate). Where("NOT EXISTS (SELECT 1 FROM requests WHERE students.request_id = requests.id AND requests.status IN (?))", status). Select()
Saya menggunakan not exists
子查询来检查在 requests
表中具有相同 request_id
的请求,并且其状态存在于 status
dalam kepingan. Jika permintaan sedemikian ditemui dalam subkueri, permintaan tersebut akan dikecualikan daripada keputusan akhir.
Atas ialah kandungan terperinci Perlu mengecualikan id yang terdapat dalam jadual pertama daripada jadual kedua. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!