Rumah > Soal Jawab > teks badan
Saya perlu mendapatkan semula semua tetapan lalai daripada jadual tetapan, tetapi juga mendapatkan tetapan aksara jika aksara x hadir.
Tetapi pertanyaan ini hanya mendapatkan semula tetapan dengan aksara = 1, jika pengguna belum menetapkan apa-apa, ia tidak akan mendapatkan semula tetapan lalai.
SELECT `settings`.*, `character_settings`.`value` FROM (`settings`) LEFT JOIN `character_settings` ON `character_settings`.`setting_id` = `settings`.`id` WHERE `character_settings`.`character_id` = '1'
Jadi saya sepatutnya memerlukan sesuatu seperti ini:
array( '0' => array('somekey' => 'keyname', 'value' => 'thevalue'), '1' => array('somekey2' => 'keyname2'), '2' => array('somekey3' => 'keyname3') )
Di mana kekunci 1 dan 2 ialah nilai lalai apabila kunci 0 mengandungi nilai lalai dengan nilai aksara.
P粉5855417662023-10-12 11:03:03
Apabila melakukan OUTER JOIN (ANSI-89 atau ANSI-92), kedudukan penapis adalah penting kerana syarat yang dinyatakan dalam klausa ON
digunakan sebelum melakukan JOIN. ON
子句中指定的条件。 建立 JOIN 后将应用 WHERE
子句中提供的针对 OUTER JOINed 表的条件。这可能会产生非常不同的结果集。相比之下,如果在 ON
或 WHERE
Selepas JOIN diwujudkan
WHERE
untuk jadual OUTER JOINed akan digunakan. Ini mungkin menghasilkan set hasil yang sangat berbeza. Sebaliknya, tidak penting untuk JOIN DALAM jika anda memberikan syarat dalam klausa ON
atau WHERE
- hasilnya akan sama. 🎜
SELECT s.*, cs.`value` FROM SETTINGS s LEFT JOIN CHARACTER_SETTINGS cs ON cs.setting_id = s.id AND cs.character_id = 1
P粉9577231242023-10-12 00:19:46
where
子句会过滤掉 left join
Talian tidak berjaya. Pindahkannya ke sambungan:
SELECT `settings`.*, `character_settings`.`value` FROM `settings` LEFT JOIN `character_settings` ON `character_settings`.`setting_id` = `settings`.`id` AND `character_settings`.`character_id` = '1'