Android 布尔逻辑语法和MYSQL语法问题

Android 布尔逻辑语法和MYSQL语法问题,android,mysql,sql,if-statement,Android,Mysql,Sql,If Statement,我不是布尔表达式的学习者,但这似乎让我有点头疼。 在我的应用程序中,当我搜索一个用户时,我使用这个MYSQL语句从我的数据中接收某些值 SELECT `u3`.`username`, CASE WHEN `u3`.`username` IS NULL THEN 'Not Existing' ELSE 'Existing' END is_following FROM

我不是布尔表达式的学习者,但这似乎让我有点头疼。 在我的应用程序中,当我搜索一个用户时,我使用这个MYSQL语句从我的数据中接收某些值

SELECT `u3`.`username`, 
                      CASE WHEN `u3`.`username` IS NULL THEN 'Not Existing'
                      ELSE 'Existing' END is_following
                      FROM `userinfo` `u3` WHERE `u3`.`username` LIKE '%".mysql_real_escape_string($data)."%' OR `u3`.`email` LIKE '%".mysql_real_escape_string($data)."%'
                      UNION 
                      SELECT `u2`.`username`,
                      CASE WHEN `u2`.`username` IS NULL THEN 'Follow'
                      ELSE 'Following' END is_following
                      FROM
                      `userinfo` `u1` LEFT JOIN `followers` `f`
                      ON `u1`.`username` = `f`.`source_id`
                      LEFT JOIN `userinfo` `u2`
                      ON `f`.`destination_id` = `u2`.`username`
                      AND (`u2`.`username` LIKE '%".mysql_real_escape_string($data)."%' OR `u2`.`email` LIKE '%".mysql_real_escape_string($data)."%')
                      WHERE
                      `u1`.`username` = '$name'
现在,上面的语法将返回这些值集、用户名和我自己的元数据。例如,它将返回

一组值1:(davies和现有)[如果davies在userinfo表中]和(davies和以下)[如果davies在followers表中跟随halex]

                                  OR
一组值2:(null且不存在)[如果davies不在userinfo表中]和(null且不在其后)[davies不存在]

                                  OR
一组值3:(davies和现有)[如果davies在userinfo表中]和(null和不在后面)[如果davies不在halex后面]

这些是我收到的一组值,我需要一个if语句来筛选,这样我就可以向用户显示这些简单的信息
davies和Follow
davies和Follow[如果davies没有跟随halex]
用户不存在
现在我不确定是否应该更改SOL语句的结构,或者是否可以使用
if和else
语句获得更好的处理此逻辑的方法 这是我的
if-else
语句的结构,但它似乎没有按照我希望的方式工作

if(username != null && metadata.contains("Existing"))//user exist
{
    value = username;
    //user exists but skip
}else
{
    if(username != null)
    {
        map = new HashMap<String, String>();
            map.put(TAG_USERNAME, value);
            map.put(TAG_METADATA, metadata);
            listvalue.add(map);
    }else
   {
        //user does not exist
        Log.i("search ", "user does not exist");
      }
}
if(username!=null&&metadata.contains(“现有”)//用户存在
{
值=用户名;
//用户存在但跳过
}否则
{
如果(用户名!=null)
{
map=新的HashMap();
map.put(标记\用户名、值);
map.put(TAG_元数据、元数据);
添加(映射);
}否则
{
//用户不存在
Log.i(“搜索”,“用户不存在”);
}
}
上面的代码属于android。
谢谢,谢谢你的建议。再次提前感谢。

如果将查询分为两部分怎么办?一次查询一组信息将使事情变得更简单、更容易调试

我可以想象这样做(在伪代码中):


(我只复制了与您工会的第一个SELECT语句相关的功能;与第二个语句相关的逻辑可以类似地重写。)

您上一个代码示例是用什么语言编写的(“if(username!=null&&metadata.contains(“Existing”)//user exist…”示例)?@BenGribaudo语言是安卓的
query = "SELECT username 
         FROM `userinfo` `u3` 
         WHERE `u3`.`username` LIKE '%".mysql_real_escape_string($data)."%' 
             OR `u3`.`email` LIKE '%".mysql_real_escape_string($data)."%'"

var result = db.execute(query);
// set to true if the above query returns at least one row
bool user_exists = (result.RowCount() > 0)
var username = (user_exists)? result.GetRow().GetField("username") : null;

if(user_exists)//user exist
{
    value = username;
    //user exists but skip
} // ....