嗨我被困在查詢。我只想在if語句中的條件爲真時才執行連接語句,否則不要執行連接並讓其餘的查詢執行。mysql如果條件符合然後執行加入,否則不是
例如,我的查詢是這樣的:
SELECT `t`.`id`, `t`.`title`, `t`.`date_created`, `t`.`video_id`, `t`.`audio_id`, `t`.`created_by`, `t`.`updated`, `t`.`gamenumber`, `t`.`cat_id`, `t`.`is_deleted`, `t`.`marked_by`, `t`.`is_hidden`, `t`.`battle_type`, `t`.`media` FROM `postdata` `t`
如果t.video_id = '' 然後運行連接語句
left join processes as pv on (pv.video_id = t.video_id)
共同WHERE語句在整個查詢
cat_id IS NOT NULL and is_deleted=0 and is_hidden=0 and battle_type="public" ORDER BY date_created
!
WHERE語句也需要這個條件,如果t.video_id!=''那麼
pv.status=3
基本上,如果'postdata'表中包含字段'video_id',其中包含視頻的id。 '進程'表也包含這些video_id。因此,如果postdata.video_id不爲空,那麼執行join語句來檢查video_id是否爲進程表包含status = 3。 (如果狀態= 3,則只能獲取視頻記錄),否則如果postdata.video_id爲空,則執行沒有加入語句和普通Where語句的查詢。
請幫忙。
爲什麼不乾脆把'和T。 video_id <>'''在連接謂詞中。您將爲不匹配的行獲得空值。 –
這與Yii有什麼關係? – crafter
@craafter,我簡化了mysql中的查詢。我實際上在Yii上工作,並使用CDbcriteria來執行此查詢。 –