Mysql where子句中包含大小写的未知列

Mysql where子句中包含大小写的未知列,mysql,Mysql,这里出了什么问题,还是丢失了 SELECT CASE WHEN (f_username = '$username' AND table1.code = table2.code) THEN '1' ELSE '0' END as is_favorite FROM ( SELECT * FROM favorites WHERE f_username='$username' AND code

这里出了什么问题,还是丢失了

SELECT CASE WHEN (f_username = '$username' AND table1.code = table2.code) THEN '1'
            ELSE '0'
             END as is_favorite
 FROM (
      SELECT *
        FROM favorites
       WHERE f_username='$username'
         AND code = table2.code
     ) table1
INNER JOIN (
       SELECT * 
         FROM groups
        WHERE gname LIKE '%$text%'
     ) table2
这是一个错误

“where子句”中的未知列“table2.code”

编辑

我有两张桌子,一组/最喜欢的

集团结构为: gname/代码

收藏夹结构为: 代码/f_用户名


我要找的是,我想得到特定查询中的组列表,并且我想根据用户名检查每个组的收藏夹,如果他添加为收藏夹或不是收藏夹。

有什么问题或遗漏了什么?您在第一个子查询中引用的是表别名table2。该别名不在该子查询的范围内,因为您只将其定义为第二个子查询的别名。这是SQL:AND code=table2.code中令人不快的地方。查询解析器没有访问您的SELECT子句,因为它试图先找出哪些列是可用的

您的查询具有奇怪的结构。你可能应该考虑简单地加入这样的表格。

SELECT whatever
  FROM favorites f
  JOIN groups g ON f.code = g.code 
 WHERE f.f_username = '$username'
   AND g.gname LIKE '%$text%'

但是你没有显示任何样本数据或解释你想要的结果,所以我猜。

我想这就是你想要的:

SELECT  gname, CASE WHEN favorites.code IS NULL THEN '0'
                ELSE '1'
                END as is_favorite
FROM    groups
WHERE   WHERE gname LIKE '%$text%'
LEFT JOIN favorites ON groups.code = favorites.code

是否确实没有将table2的“代码”列别名为其他名称?MySQL抱怨此列不存在,请检查您是否未将其命名为其他名称或别名。我确定。“组”表和“收藏夹”表具有代码列SELECT table1.code,table1.f_username FROM SELECT code,来自dbo.favorites的f_用户名,其中f_用户名=“$username”和代码=表2.code作为表1内部连接选择gname,来自dbo.groups的代码,其中gname类似“%$text%”作为table1上的table2。code=table2.code尝试上面的代码…在FROM SELECT*中,您将加入table2。代码在那里不存在这工作正常,但我要寻找的是,当我得到一些组时,我想检查用户是否添加到收藏夹其他表中,例如:两个组group1、group2,用户名是abdulaziz,他们将group2添加到收藏夹中