在 where 子句中使用 having
using having in where clause
如果我有以下table:
my_table:
varchar name
int score
我想执行以下查询:
select name from my_table group by name having count(*)>3
union
select name from my_table where name like '%xyz'
有没有没有联合的方法来执行这个查询?
明确一点:我希望所有在 table 或 中具有三个以上条目的名称都回答 like 从句 '%xyz'
。
select name,count(*) as num
from my_table
group by name having num>3
where name like '%xyz'
联合仅在链接两个表时使用。
我想你正在寻找这样的东西?
SELECT name,count(*) as num
FROM my_table
GROUP BY name
HAVING num > 3 OR name like '%xyz'
http://sqlfiddle.com/#!9/1b6a0/2/0
阅读预期结果后编辑以匹配 OP 的问题。
下面的查询只会在分组前抓取与 like 子句匹配的名称:
SELECT name,count(*) as num FROM my_table GROUP BY name HAVING num > 3 OR name like '%xyz'
编辑: 上述查询已更改为允许 name 或 num 子句导致行被接受。
如果我有以下table:
my_table:
varchar name
int score
我想执行以下查询:
select name from my_table group by name having count(*)>3
union
select name from my_table where name like '%xyz'
有没有没有联合的方法来执行这个查询?
明确一点:我希望所有在 table 或 中具有三个以上条目的名称都回答 like 从句 '%xyz'
。
select name,count(*) as num
from my_table
group by name having num>3
where name like '%xyz'
联合仅在链接两个表时使用。
我想你正在寻找这样的东西?
SELECT name,count(*) as num
FROM my_table
GROUP BY name
HAVING num > 3 OR name like '%xyz'
http://sqlfiddle.com/#!9/1b6a0/2/0
阅读预期结果后编辑以匹配 OP 的问题。
下面的查询只会在分组前抓取与 like 子句匹配的名称:
SELECT name,count(*) as num FROM my_table GROUP BY name HAVING num > 3 OR name like '%xyz'
编辑: 上述查询已更改为允许 name 或 num 子句导致行被接受。