517304 发表于 2016-12-18 13:28:21

SQL语句查询问题

请教,我执行查询

(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系统限制,在模版里只能这么写...表结构和模板机制是没法改动的

517304 发表于 2016-12-18 13:38:06

上面两个语句在mysql里是可以执行的

517304 发表于 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严格模式问题

页: [1]
查看完整版本: SQL语句查询问题