观察以下分别用condition和on的语句
condition:
SELECT `t`.`id` AS `t0_c0`, `t`.`fdName` AS `t0_c1`,
`t`.`fdEnglish` AS `t0_c2`, `t`.`fdTypeID` AS `t0_c3`, `t`.`fdKindID` AS
`t0_c4`, `t`.`fdAcronym` AS `t0_c5`, `t`.`fdPinyin` AS `t0_c6`,
`t`.`fdProviderID` AS `t0_c7`, `t`.`fdCpID` AS `t0_c8`, `t`.`fdOperatorID`
AS `t0_c9`, `t`.`fdApproverID` AS `t0_c10`, `t`.`fdApprove` AS `t0_c11`,
`t`.`fdCreate` AS `t0_c12`, `t`.`fdExpire` AS `t0_c13`, `t`.`fdModify` AS
`t0_c14`, `t`.`fdAdapt` AS `t0_c15`, `t`.`fdHot` AS `t0_c16`,
`t`.`fdBornID` AS `t0_c17`, `t`.`fdSync` AS `t0_c18`, `t`.`fdCommentID` AS
`t0_c19`, `t`.`fdDisabled` AS `t0_c20`, `quality`.`id` AS `t1_c0`,
`quality`.`fdContentID` AS `t1_c1`, `quality`.`fdFileID` AS `t1_c2`,
`quality`.`fdAttributeID` AS `t1_c3`, `quality`.`fdSourceID` AS `t1_c4`,
`quality`.`fdValue` AS `t1_c5`, `playNum`.`id` AS `t2_c0`,
`playNum`.`fdContentID` AS `t2_c1`, `playNum`.`fdFileID` AS `t2_c2`,
`playNum`.`fdAttributeID` AS `t2_c3`, `playNum`.`fdSourceID` AS `t2_c4`,
`playNum`.`fdValue` AS `t2_c5`, `perpareAttrID`.`id` AS `t3_c0`,
`perpareAttrID`.`fdContentID` AS `t3_c1`, `perpareAttrID`.`fdFileID` AS
`t3_c2`, `perpareAttrID`.`fdAttributeID` AS `t3_c3`,
`perpareAttrID`.`fdSourceID` AS `t3_c4`, `perpareAttrID`.`fdValue` AS
`t3_c5` FROM `keti2ctn`.`tbContent` `t` LEFT OUTER JOIN
`keti2ctn`.`tbInteger` `quality` ON (`quality`.`fdContentID`=`t`.`id`) AND
(quality.fdAttributeID=360) LEFT OUTER JOIN `keti2ctn`.`tbInteger`
`playNum` ON (`playNum`.`fdContentID`=`t`.`id`) LEFT OUTER JOIN
`keti2ctn`.`tbInteger` `perpareAttrID` ON
(`perpareAttrID`.`fdContentID`=`t`.`id`) WHERE ((t.fdTypeID IN (:ycp0,
:ycp1, :ycp2, :ycp3, :ycp4)) AND (perpareAttrID.fdValue is null)) AND
(playNum.fdAttributeID=50) AND (perpareAttrID.fdAttributeID=386) ORDER BY
t.id desc LIMIT 10
on:
SELECT `t`.`id` AS `t0_c0`, `t`.`fdName` AS `t0_c1`,
`t`.`fdEnglish` AS `t0_c2`, `t`.`fdTypeID` AS `t0_c3`, `t`.`fdKindID` AS
`t0_c4`, `t`.`fdAcronym` AS `t0_c5`, `t`.`fdPinyin` AS `t0_c6`,
`t`.`fdProviderID` AS `t0_c7`, `t`.`fdCpID` AS `t0_c8`, `t`.`fdOperatorID`
AS `t0_c9`, `t`.`fdApproverID` AS `t0_c10`, `t`.`fdApprove` AS `t0_c11`,
`t`.`fdCreate` AS `t0_c12`, `t`.`fdExpire` AS `t0_c13`, `t`.`fdModify` AS
`t0_c14`, `t`.`fdAdapt` AS `t0_c15`, `t`.`fdHot` AS `t0_c16`,
`t`.`fdBornID` AS `t0_c17`, `t`.`fdSync` AS `t0_c18`, `t`.`fdCommentID` AS
`t0_c19`, `t`.`fdDisabled` AS `t0_c20`, `quality`.`id` AS `t1_c0`,
`quality`.`fdContentID` AS `t1_c1`, `quality`.`fdFileID` AS `t1_c2`,
`quality`.`fdAttributeID` AS `t1_c3`, `quality`.`fdSourceID` AS `t1_c4`,
`quality`.`fdValue` AS `t1_c5`, `playNum`.`id` AS `t2_c0`,
`playNum`.`fdContentID` AS `t2_c1`, `playNum`.`fdFileID` AS `t2_c2`,
`playNum`.`fdAttributeID` AS `t2_c3`, `playNum`.`fdSourceID` AS `t2_c4`,
`playNum`.`fdValue` AS `t2_c5`, `perpareAttrID`.`id` AS `t3_c0`,
`perpareAttrID`.`fdContentID` AS `t3_c1`, `perpareAttrID`.`fdFileID` AS
`t3_c2`, `perpareAttrID`.`fdAttributeID` AS `t3_c3`,
`perpareAttrID`.`fdSourceID` AS `t3_c4`, `perpareAttrID`.`fdValue` AS
`t3_c5` FROM `keti2ctn`.`tbContent` `t` LEFT OUTER JOIN
`keti2ctn`.`tbInteger` `quality` ON (`quality`.`fdContentID`=`t`.`id`) AND
(quality.fdAttributeID=360) LEFT OUTER JOIN `keti2ctn`.`tbInteger`
`playNum` ON (`playNum`.`fdContentID`=`t`.`id`) LEFT OUTER JOIN
`keti2ctn`.`tbInteger` `perpareAttrID` ON
(`perpareAttrID`.`fdContentID`=`t`.`id`) AND
(perpareAttrID.fdAttributeID=386) WHERE ((t.fdTypeID IN (:ycp0, :ycp1,
:ycp2, :ycp3, :ycp4)) AND (perpareAttrID.fdValue is null)) AND
(playNum.fdAttributeID=50) ORDER BY t.id desc LIMIT 10
观察上述语句,不难看出当用condition的时候关联表的时候,AND (perpareAttrID.fdAttributeID=386) 作为联表后where的条件限制,
而用on的时候则是作为联表限制。