Codeigniter MySQL 列 where 子句中的未知列



我在 SELECT 中声明了变量upload_source但得到错误

">

where"子句中的未知列"upload_source">

SELECT b.name as name, filename, upload_date, IF(filename LIKE '%.png%', 1, 0) as type, IF(ex_link!='', 0, 1) as upload_source, title, a.id
FROM (`all_media` a)
LEFT JOIN `admins` b ON `b`.`id`=`user_id`
WHERE `a`.`approved` =  0
AND `upload_source` =  0
ORDER BY `filename` DESC

如何解决?

不能在 where 子句中使用别名表达式/列。在Where子句中使用相同的表达式(在Select子句中定义(。

来自 MySQL 文档:

可以在查询选择列表中使用别名为列提供 不同名称。您可以在"分组依据"、"排序依据"或"具有"中使用别名 子句来引用列。

标准 SQL 不允许在 WHERE 子句中引用列别名。 施加此限制是因为当 WHERE 子句 评估后,列值可能尚未确定。

改为执行以下操作(我已经即兴upload_source = 0ex_link != ''(:

SELECT b.name as name, 
filename, 
upload_date, 
IF(filename LIKE '%.png%', 1, 0) as type, 
IF(ex_link!='', 0, 1) as upload_source, 
title, 
a.id
FROM `all_media` AS a 
LEFT JOIN `admins` b ON `b`.`id`=`user_id`
WHERE `a`.`approved` =  0
AND ex_link != '' 
ORDER BY `filename` DESC

在 SQL 中,WHERE关键字不能与聚合函数一起使用。 尝试使用有子句

SELECT b.name as name, filename, upload_date, IF(filename LIKE '%.png%', 1, 0) as type, IF(ex_link!='', 0, 1) as upload_source,title, a.id FROM (all_mediaa) LEFT JOIN管理员b ONb.ID=user_id WHERE.批准的= 0 HAVINGupload_source= 0 ORDER BY文件名DESC

相关内容

  • 没有找到相关文章

最新更新