我已经定义了这些表:
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/