用户
 找回密码
 入住 CI 中国社区
搜索
查看: 1111|回复: 2
收起左侧

SQL语句查询问题

[复制链接]
发表于 2016-12-18 13:28:21 | 显示全部楼层 |阅读模式
请教,我执行查询

(SELECT * FROM dr_1_whdt AS a, dr_1_whdt_flag AS b WHERE a.id = b.id AND b.flag=9) UNION
(SELECT * FROM dr_1_fybl AS a, dr_1_fybl_flag AS b WHERE a.id = b.id AND b.flag=9) UNION
(SELECT * FROM dr_1_fyxy AS a, dr_1_fyxy_flag AS b WHERE a.id = b.id AND b.flag=9)
ORDER BY updatetime DESC LIMIT 2'

可以正确执行,为什么再多加几个表进去就不行了

(SELECT * FROM dr_1_whdt AS a, dr_1_whdt_flag AS b WHERE a.id = b.id AND b.flag=9) UNION
(SELECT * FROM dr_1_fybl AS a, dr_1_fybl_flag AS b WHERE a.id = b.id AND b.flag=9) UNION
(SELECT * FROM dr_1_fyxy AS a, dr_1_fyxy_flag AS b WHERE a.id = b.id AND b.flag=9) UNION
(SELECT * FROM dr_1_zhy AS a, dr_1_zhy_flag AS b WHERE a.id = b.id AND b.flag=9) UNION
(SELECT * FROM dr_1_whmc AS a, dr_1_whmc_flag AS b WHERE a.id = b.id AND b.flag=9) UNION
(SELECT * FROM dr_1_whdl AS a, dr_1_whdl_flag AS b WHERE a.id = b.id AND b.flag=9) UNION
(SELECT * FROM dr_1_mjmz AS a, dr_1_mjmz_flag AS b WHERE a.id = b.id AND b.flag=9)
ORDER BY updatetime DESC LIMIT 2'

是语句长度问题,还是UNION个数问题,如何解决

搞这么复杂我也不想,CMS系统限制,在模版里只能这么写...表结构和模板机制是没法改动的
 楼主| 发表于 2016-12-18 13:38:06 | 显示全部楼层
上面两个语句在mysql里是可以执行的
 楼主| 发表于 2016-12-18 13:49:43 | 显示全部楼层
长度 个数都没有限制, 是语法问题, 在CI中UNION要求必须所有表字段一致

(SELECT a.title, a.url, a.description, a.updatetime FROM dr_1_whdt AS a, dr_1_whdt_flag AS b WHERE a.id = b.id AND b.flag=9) UNION
(SELECT a.title, a.url, a.description, a.updatetime FROM dr_1_fybl AS a, dr_1_fybl_flag AS b WHERE a.id = b.id AND b.flag=9) UNION
(SELECT a.title, a.url, a.description, a.updatetime FROM dr_1_fyxy AS a, dr_1_fyxy_flag AS b WHERE a.id = b.id AND b.flag=9) UNION
(SELECT a.title, a.url, a.description, a.updatetime FROM dr_1_zhy AS a, dr_1_zhy_flag AS b WHERE a.id = b.id AND b.flag=9) UNION
(SELECT a.title, a.url, a.description, a.updatetime FROM dr_1_whmc AS a, dr_1_whmc_flag AS b WHERE a.id = b.id AND b.flag=9) UNION
(SELECT a.title, a.url, a.description, a.updatetime FROM dr_1_whdl AS a, dr_1_whdl_flag AS b WHERE a.id = b.id AND b.flag=9) UNION
(SELECT a.title, a.url, a.description, a.updatetime FROM dr_1_mjmz AS a, dr_1_mjmz_flag AS b WHERE a.id = b.id AND b.flag=9)
ORDER BY updatetime DESC LIMIT 2

这样就通过了,也许是mysql严格模式问题

本版积分规则