这是我当前的查询:
SELECT `performers`.`hash`,
`performers`.`alias`,
`performers`.`date_updated`,
`performers`.`status`,
IF(`performers`.`status` = 'active', 'deleted','active') AS `statususe`,
`images`.`image_hash_file`
FROM `performers`
LEFT JOIN `images` ON `images`.`asset_id` = `performers`.`id`
WHERE (`images`.`asset_type` = 'performer')
ORDER BY `alias` ASC LIMIT 12`
其中,有一个where子句
WHERE (`images`.`asset_type` = 'performer')
我希望它是可选的,这样如果 where 子句不适合,它仍然会显示表演者表中没有连接到完成图像记录的记录。
最佳答案
您可以在 LEFT JOIN 中添加 WHERE 子句,因此不匹配的行仍在结果集中。
SELECT `performers`.`hash`, `performers`.`alias`,
`performers`.`date_updated`, `performers`.`status`,
IF(`performers`.`status` = 'active', 'deleted','active') AS `statususe`,
`images`.`image_hash_file`
FROM `performers`
LEFT JOIN `images` ON `images`.`asset_id` = `performers`.`id` AND `images`.`asset_type` = 'performer'
ORDER BY `alias` ASC
LIMIT 12
WHERE 和 ON 子句之间的主要区别在于,ON 子句在 JOIN 期间起作用,而 WHERE 子句在连接所有内容之后起作用,从而使不匹配的行从结果集中删除。
关于mysql - 在 sql 语句中使 where 子句可选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29757595/