Rumah  >  Soal Jawab  >  teks badan

Di mana klausa digunakan dalam gabungan kiri

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粉439804514P粉439804514374 hari yang lalu664

membalas semua(2)saya akan balas

  • P粉585541766

    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 表的条件。这可能会产生非常不同的结果集。相比之下,如果在 ONWHERESelepas JOIN diwujudkan

    syarat yang disediakan dalam klausa 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

    balas
    0
  • P粉957723124

    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'

    balas
    0
  • Batalbalas