亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

左隨何處條款

左隨何處條款

慕后森 2019-12-12 14:42:08
我需要從設置表中檢索所有默認設置,而且還需要獲取字符設置(如果存在x字符)。但是此查詢僅檢索character = 1的那些設置,如果用戶沒有設置任何人,則不是默認設置。SELECT `settings`.*, `character_settings`.`value`FROM (`settings`)LEFT JOIN `character_settings` ON `character_settings`.`setting_id` = `settings`.`id`WHERE `character_settings`.`character_id` = '1'  所以我應該需要這樣的東西:array(    '0' => array('somekey' => 'keyname', 'value' => 'thevalue'),    '1' => array('somekey2' => 'keyname2'),    '2' => array('somekey3' => 'keyname3'))其中鍵1和2是默認值,而鍵0包含帶有字符值的默認值。
查看完整描述

3 回答

?
紫衣仙女

TA貢獻1839條經驗 獲得超15個贊

該where子句過濾掉行left join不成功的行。將其移至聯接:


SELECT  `settings`.*, `character_settings`.`value`

FROM    `settings`

LEFT JOIN 

       `character_settings` 

ON     `character_settings`.`setting_id` = `settings`.`id`

        AND `character_settings`.`character_id` = '1'  


查看完整回答
反對 回復 2019-12-12
?
慕蓋茨4494581

TA貢獻1850條經驗 獲得超11個贊

在制作OUTER JOIN(ANSI-89或ANSI-92)時,過濾位置很重要,因為在創建JOIN之前ON應用了子句中指定的條件。進行JOIN后,將應用針對子句中提供的OUTER JOINed表的條件。這會產生非常不同的結果集。相比之下,如果or 子句中提供了條件,則對于INNER JOINs而言無關緊要-結果將是相同的。WHEREONWHERE


  SELECT  s.*, 

          cs.`value`

     FROM SETTINGS s

LEFT JOIN CHARACTER_SETTINGS cs ON cs.setting_id = s.id

                               AND cs.character_id = 1


查看完整回答
反對 回復 2019-12-12
?
嗶嗶one

TA貢獻1854條經驗 獲得超8個贊

如果我正確理解了您的問題,那么您需要設置數據庫中的記錄,如果它們沒有跨character_settings表的聯接,或者該聯接記錄的character_id = 1。


因此,您應該這樣做


SELECT `settings`.*, `character_settings`.`value`

FROM (`settings`)

LEFT OUTER JOIN `character_settings` 

ON `character_settings`.`setting_id` = `settings`.`id`

WHERE `character_settings`.`character_id` = '1' OR

`character_settings`.character_id is NULL


查看完整回答
反對 回復 2019-12-12
  • 3 回答
  • 0 關注
  • 517 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號