-1

我有 2 个表
这里是表 1 表名是例如

项目清单

+-----+----------+-----+  
| uid | username | age |  
+-----+----------+-----+  
|   1 | doe      |  17 |  
|   2 | smith    |  18 |  
|   3 | john     |  30 |  
+-----+----------+-----+ 

另一个是

最喜欢的

+-----+------+---------+
| uid | user | itemuid |
+-----+------+---------+
|   1 | alex |       2 |
+-----+------+---------+

这是我的mysql查询*不工作*当我运行php文件时解决这个问题的任何方法我在mysql语法中遇到错误

SELECT c.uid, c.username, c.age,i.uid,i.user,i.itemuid 
from itemlist c 
left join fav i on c.uid = i.itemuid 
if (i.user = 'alex') THEN 
SET @fav = 1;
ELSE
SET @fav = 0;
END IF

这是示例 php

while ($row = mysqli_fetch_array($res)){
    if ($row['fav'] = '1'){
            echo $row['username']." is exit in fav";
        }else{
            echo $row['username']." is not exit in fav";
    }
}

我希望你能理解我的问题吗?

4

1 回答 1

1

fav在结果集中返回一个名为的列,您需要在 SELECT 列表中包含一个表达式,并给它一个别名fav

完全不清楚为什么需要 MySQL 用户定义变量。如果您不知道为什么需要一个,那么您可能不需要一个。

鉴于您的 PHP 代码正在寻找fav在结果集中命名的列,您可能想要这样的内容:

SELECT c.uid
     , c.username
     , c.age
     , i.uid AS i_uid
     , i.user
     , i.itemuid
     , IF(i.user='alex',1,0) AS fav
  FROM itemlist c 
  LEFT
  JOIN fav i ON i.itemuid  = c.uid

请注意,原始查询有两列名为uid; 如果你想返回两者,并且能够通过列名引用这两个,你需要为每个都有不同的名称。在上面的查询中,我为i.uid列分配了一个别名,这样两uid列都可以通过不同的列名使用。

于 2014-09-08T22:37:46.140 回答