2 baidu 32457989 baidu_32457989 于 2016.01.18 14:22 提问

mysql多个条件分列显示的问题

SELECT dir3.url from dir3 LEFT JOIN dir4 on dir4.url=dir3.url where dir4.id is null or dir3.md5<>dir4.md5 and dir3.inputtime=1453086000

现在这条语句,把两个条件的结果都显示在一列
因为我需要分开处理,所以希望能改成两列显示
SELECT dir3.url from dir3 LEFT JOIN dir4 on dir4.url=dir3.url where dir4.id is null and dir3.inputtime=1453086000为一列
SELECT dir3.url from dir3 LEFT JOIN dir4 on dir4.url=dir3.url dir3.md5<>dir4.md5 and dir3.inputtime=1453086000为一列
希望大神帮忙,在线等

2个回答

danielinbiti
danielinbiti   Ds   Rxr 2016.01.18 14:25
已采纳
 SELECT dir3.url as url1,'' as url2 from dir3 LEFT JOIN dir4 on dir4.url=dir3.url where dir4.id is null and dir3.inputtime=1453086000
 union all
 SELECT '' as url1,dir3.url as url2 from dir3 LEFT JOIN dir4 on dir4.url=dir3.url dir3.md5<>dir4.md5 and dir3.inputtime=1453086000
baidu_32457989
baidu_32457989 大神,还有问题,我刚试了一下,现在是差不多了,分成了两列,但是第二列的结果是在第一列结果之后显示了,如我第一列有100条记录,那么第二条就是从101条开始显示,前面全是空,能否再帮忙修改一下,多谢
接近 2 年之前 回复
danielinbiti
danielinbiti   Ds   Rxr 2016.01.18 14:45
 SELECT group_concat(url1 separator ''),group_concat(url2) FROM (
SELECT @CNT:=@CNT+1 rownum,dir3.url as url1,'' as url2 from dir3 LEFT JOIN dir4 on dir4.url=dir3.url where dir4.id is null and dir3.inputtime=1453086000,(select @cnt:=0) r
 union all
 SELECT @CNT1:=@CNT1+1 rownum,'' as url1,dir3.url as url2 from dir3 LEFT JOIN dir4 on dir4.url=dir3.url dir3.md5<>dir4.md5 and dir3.inputtime=1453086000,(select @cnt1:=0) r1
 ) A group by rownum
baidu_32457989
baidu_32457989 回复danielinbiti: 我是在c语言里面用,既然弄不成一条我就只能分成两条写了,只是怕数据多了会影响速度,但是看你写这么麻烦,我觉得就是写出来了可能也不如分成两条快了。其实我不懂sql,多谢大师
接近 2 年之前 回复
danielinbiti
danielinbiti 回复baidu_32457989: 不行改成存储过程或者函数
接近 2 年之前 回复
baidu_32457989
baidu_32457989 唉,还是用不了,多谢了,麻烦你了
接近 2 年之前 回复
danielinbiti
danielinbiti 回复baidu_32457989: 可能是navicat原因,把union all两侧的sql再包装一下select * from (内容)
接近 2 年之前 回复
baidu_32457989
baidu_32457989 回复danielinbiti: 加上了,可是看错误,还没检查到那,在union就报错了,加上之后还是这个错误,多谢多谢
接近 2 年之前 回复
danielinbiti
danielinbiti 回复baidu_32457989: 原句中 dir4.url=dir3.url dir3.md 这之间少了一个where吧
接近 2 年之前 回复
baidu_32457989
baidu_32457989 回复danielinbiti: [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'union all SELECT @CNT1:=@CNT1+1 rownum,'' as url1,dir3.url as url2 from dir3 LEF' at line 2,是哪个navicat,因为我需要用c语言分别处理这两列数据,所以还希望大神再麻烦一些,多谢了
接近 2 年之前 回复
danielinbiti
danielinbiti 回复baidu_32457989: 什么错呀?是拿客户端工具试的SQL吗
接近 2 年之前 回复
baidu_32457989
baidu_32457989 不好意思啊,提示有错误,在union all 附近
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!