NutzCN Logo
问答 Sql 追加查询条件
发布于 2887天前 作者 menglinxi 2794 次浏览 复制 上一个帖子 下一个帖子
标签:

Sql sql 这个能做append操作么?如果我要根据查询字段是否有值,追加 sql语句用哪个方法?

Sql sql = Sqls.create("select bl.*,gm.gamename,ch.channelname FROM biz_gc_link bl LEFT JOIN biz_game gm on bl.gameid=gm.id left join biz_channel ch on bl.channelid=ch.id");

后面 where gameid= and channelid=

如何处理?

9 回复
Sql sql = Sqls.create("select bl.*,gm.gamename,ch.channelname FROM biz_gc_link bl LEFT JOIN biz_game gm on bl.gameid=gm.id left join biz_channel ch on bl.channelid=ch.id $cnd");
sql.setVar("cnd", Cnd.where(............));

是不是就是字符串替换?有没有注入问题?

感觉单表的话追加$condition很好
因为我爱写Cnd,还喜欢Sql的灵活.

Cnd可不是直接拼入

cnd,可以追加多个条件么? 比如,当存在gameid参数时查询gameid,当存在 channelid时,再追加一个channelid查询。

Cnd cnd = Cnd.NEW();

cnd.andEX("name", "=", name);
if (age > 0)
       cnd.and("age", "<" , 20);

// 一路连着下去. PS: 注意and与andEX的区别

Sql sql = Sqls.queryRecord("select bl.*,gm.gamename,ch.channelname FROM biz_gc_link bl  LEFT JOIN biz_game gm on bl.gameid=gm.id left join biz_channel ch on bl.channelid=ch.id where 1=1 $cnd");
		if(filter!=null){
			String gameid=(String) filter.get("gameid");
			String channelid=(String) filter.get("channelid");
			String startm=(String)filter.get("startm");
			String endtm=(String)filter.get("endtm");
			Cnd cndsel=Cnd.NEW();
			cnd.andEX("gameid","=",gameid);
			cnd.andEX("channelid","=",channelid);
			cnd.andEX("FROM_UNIXTIME(bl.opAt, '%Y-%m-%d')",">=",startm);
			cnd.andEX("FROM_UNIXTIME(bl.opAt, '%Y-%m-%d')","<=",endtm);
			sql.setVar("$cnd",cnd);
		}
		this.dao().execute(sql);

貌似,cnd 没生效。条件没能附加上。

sql.setVar("cnd", cnd);

搞定。。。。感谢。。。

添加回复
请先登陆
回到顶部