mysql 1104,关于mysql case when 的难题,怎么解决?

关于mysql case when 的难题,怎么解决?

一个php程序,链接mysql;

数据库有两个表,各有adid和link字段,主表有enabled字段。

ad_pre表,预备表,主表

ad表,正式表

需求是想知道预备表中的数据在正式表中的状态

现在使用的方法是取出后用php判断状态。

select

pre.enabled,pre.link,ad.link as adlink

from

_ad_pre as pre

left join

_ad as ad

on ad.adid=pre.adid

取出记录集以后迭代记录集是利用如下代码输出状态。

if($row['adlink']=='')

$outer.= '

0';

else if($row['adlink']!=$row['link'])

$outer.= '

1';

else if($row['enabled']==0)

$outer.= '

2';

else

$outer.= '

3';

但是这样有局限性,就是不能根据此条件进行结果集排序。

知道mysql有case when,想通过case when实现php中那个if then的逻辑,但实验了好久,不知道应该怎么写,请各位大侠教教我。

我的SQL语句是:

select

pre.enabled,pre.link,ad.link as adlink,

CASE

WHEN pre.link=='' THEN 0

ELSE WHEN pre.link!=ad.link THEN 1

ELSE WHEN pre.enabled==0 THEN 2

ELSE 3

END CASE

from

_ad_pre as pre

left join

_ad as ad

on ad.adid=pre.adid

但在第一case的时候就提示错误。终不得解。

67b0a70febe552c922c54bb8560d6ef6.png

2e078318bb5b0cff66643b9935118e8a.png

使用mysql的查询的话比较麻烦一下,sql语句如下:

select (case when date_format(shijian,'%Y')=date_format(now(),'%Y') then (case when date_format(shijian,'%Y-%m-%d')=date_format(now(),'%Y-%m-%d') then date_format(shijian,'%H:%i') else date_format(shijian,'%m-%d') end) else year(shijian) end) as newshijian,shijian from text;

解释:

测试用的表:

CREATE TABLE `text` (

`shijian` datetime default NULL

)

例子中的表名叫text,时间的字段是shijian

date_format函数是将时间格式化,now函数是获取当前的时间。

另外,如果查询的结果比较多的话,建议这个复杂的查询可以使用程序来代替,比如查询出结果后,在程序中进行判断和处理,否则查询的时间会比较长。

10-04-11

| 添加评论

| 打赏

◆◆

请登录后再发表评论!

◆◆

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值