如何在PostgreSQL中使用SELECT DISTINCT和RANDOM()函数?
发布时间:2020-12-13 15:57:28 所属栏目:百科 来源:网络整理
导读:我正在尝试运行SQL查询以获取四个随机项.由于表product_filter在产品中有多个touple,我必须在SELECT中使用DISTINCT,所以我得到这个错误: 对于SELECT DISTINCT,ORDER BY表达式必须出现在选择列表中 但是如果我把RANDOM()放在我的SELECT中,它将避免DISTINCT结
我正在尝试运行SQL查询以获取四个随机项.由于表product_filter在产品中有多个touple,我必须在SELECT中使用DISTINCT,所以我得到这个错误:
对于SELECT DISTINCT,ORDER BY表达式必须出现在选择列表中 但是如果我把RANDOM()放在我的SELECT中,它将避免DISTINCT结果. 有人知道如何使用DISTINCT与RANDOM()函数?以下是我有问题的查询. SELECT DISTINCT p.id,p.title FROM product_filter pf JOIN product p ON pf.cod_product = p.cod JOIN filters f ON pf.cod_filter = f.cod WHERE p.visible = TRUE LIMIT 4 ORDER BY RANDOM(); 解决方法
您可以简化查询以避免先验问题:
SELECT p.cod,p.title FROM product p WHERE p.visible AND EXISTS ( SELECT 1 FROM product_filter pf JOIN filters f ON f.cod = pf.cod_filter WHERE pf.cod_product = p.cod ) ORDER BY random() LIMIT 4; 主要观点: >结果中只有表product的列,其他表仅检查是否存在匹配的行.对于这样的情况, (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |