postgresql - 在 Postgresql 中使用 LIKE 运算符选择计数

标签 postgresql

我已经定义了这些表:

CREATE TABLE domain (
  id          BIGSERIAL NOT NULL,
  name       varchar(255) NOT NULL,
  PRIMARY KEY (id));

CREATE TABLE url (
  id         BIGSERIAL NOT NULL,
  url       text NOT NULL,
  PRIMARY KEY (id));

我想计算每个域有多少个 url。我尝试这样做:

SELECT
    domain.name AS dn,
    SELECT COUNT(*) FROM url WHERE url.url ILIKE '%' || dn || '%'

但运气不好。出现语法错误。 如何正确处理?

最佳答案

您需要在表之间进行连接,然后按域名分组。这导致

SELECT d.name as dn, COUNT(*) as number_of_urls
FROM domain d
INNER JOIN url u ON u.url ILIKE '%'||d.name||'%'
GROUP BY d.name

这不会为 url 表中具有零条目的任何域提供一行。如果您需要这些行,请将 INNER JOIN 更改为 LEFT OUTER JOIN

关于postgresql - 在 Postgresql 中使用 LIKE 运算符选择计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40531999/

相关文章:

django - 我如何更新一个 PostgreSQL 数据库并将更改/更新同步到另一台服务器上的另一个 PostgreSQL 数据库

sql - 获取过去 x 周的记录

sql - Postgres : SELECT column name based on Boolean value

sql - 无法在 jsonb_array_elements 之后添加 where 条件

postgresql - 在 Postgres 中搜索和更新 JSON 数组元素

sql - Order BY 将 30 毫秒的查询变成 7120 毫秒的查询。已知性能问题?

sql - 我如何请求 Postgres 获取特定时间序列中不同日期的计数?

database - 没有匹配给定键的唯一约束也最终使关系不存在

java - 在没有版本注释或 OptimisticLocking 策略的情况下获取 ObjectOptimisticLockingFailureException

sql - schema.rb 中的 LOWER 索引