目的是要分别列出9个表内满足条件sortingPort = 1的条目数
SELECT count(*) FROM cg_01 WHERE sortingPort = 1 union all
SELECT count(*) FROM cg_02 WHERE sortingPort = 1 union all
.
.
.
SELECT count(*) FROM cg_09 WHERE sortingPort = 1
如果使用union all要将9条语句合并,当我要查询条件为sortingPort = 2的结果,就要修改9次。有没有办法修改FROM后面的内容只用一条语句来查询,或者有其他办法?
SELECT count(*)
FROM ??????
WHERE sortingPort = 1
也可以这样:
如果是代码里的sql就用for循环生成指定sql
如果是连接工具可以设置会话变量,如 set var = 2 ,sql 里直接用变量代替常量
oracle可以使用视图解决。mysql应该也有视图,创建一个视图即可解决你的问题,具体百度 mysql创建视图。
楼上的办法我知道,确实可行,创建的视图内容可以是这几张表的集合,
CREATE OR REPLACE VIEW cg as 'SELECT * FROM cg_01 union all
SELECT * FROM cg_01 union all
SELECT * FROM cg_01 '
就这种,然后你的库里就会出现一个像表一样叫cg的东西,里面的内容就是上面的查询语句,接下来你就直接按正常的查询条件,把表明替换成视图名就ok了,
SELECT count(*)
FROM (select sortingPort from cg_01 union select sortingPort from cg_02 union ……)
WHERE sortingPort = 1