sql(postgres)是否可以创建一个查询条件来匹配5条可能的3个条件?目前我还没有到达任何地方,我被卡住了。 Plz,帮帮忙。SQL - 与5关键字匹配3
2
A
回答
7
这是一个冗长的,但直接的解决了这个问题:
SELECT * FROM t
WHERE (CASE t.val WHEN :criteria1 THEN 1 ELSE 0 END +
CASE t.val WHEN :criteria2 THEN 1 ELSE 0 END +
CASE t.val WHEN :criteria3 THEN 1 ELSE 0 END +
CASE t.val WHEN :criteria4 THEN 1 ELSE 0 END +
CASE t.val WHEN :criteria5 THEN 1 ELSE 0 END) >= 3
你也可以做半加入一个嵌套的数组招数:
SELECT * FROM t
WHERE (
SELECT COUNT(*)
FROM UNNEST(ARRAY[:c1, :c2, :c3, :c4, :c5]) u(val)
WHERE u.val = t.val
) >= 3
或者由半加盟一个VALUES(...)
表达
SELECT * FROM t
WHERE (
SELECT COUNT(*)
FROM (VALUES (1), (1), (2), (2), (2)) u(val)
WHERE u.val = t.val
) >= 3
这里的工作的例子,我已经穿上SQL Fiddle:
WITH t(val) AS (
VALUES (1), (2), (4), (6)
)
SELECT * FROM t
WHERE (
SELECT COUNT(*)
FROM (VALUES (1), (1), (2), (2), (2)) u(val)
WHERE u.val = t.val
) >= 3
上面将返回图2,因为它是该至少三个标准中(1, 1, 2, 2, 2)
3
SELECT * FROM table
WHERE IF(crit1, 1,0)
+ IF(crit2, 1,0)
+ IF(crit3, 1,0)
+ IF(crit4, 1,0)
+ IF(crit5, 1,0) >= 3
[编辑]的匹配,而每下面的评论的唯一记录,这是无效的Postgres。这是如何在MySQL中完成的,我只是假定它是标准的...... CASE语句与原始问题更相关。
+1
这不是有效的PostgreSQL语句。 –
相关问题
- 1. 与关键字匹配的MySQL查询
- 2. 将简单的关键字和关键字与空格匹配
- 3. 如何转义与python关键字匹配的bash关键字?
- 4. 如何将关键字与SQL查询匹配?
- 5. 与关键字匹配的SQL Server全文搜索语句
- 6. 关键字匹配优化
- 7. 匹配除了关键字
- 8. 如何让MYSQL搜索最少3个关键字匹配?
- 9. MySQL关键字搜索查询与所有关键字匹配项目?
- 10. 用户搜索关键字与标签的匹配
- 11. 在Crystal Reports中与“like”关键字匹配的字符串
- 12. 搜索与MySQL中的数据匹配的关键字
- 13. 多关键字匹配问题
- 14. 导入CSV匹配多个关键字
- 15. 解析,匹配和关键字
- 16. 使用关键字,返回只匹配
- 17. 匹配分层关键字的文档
- 18. ElasticSearch - 模糊关键字匹配
- 19. Postgresql:获取匹配关键字
- 20. 混合关键字时不匹配
- 21. MySQL搜索匹配多个关键字
- 22. MySQL的PHP匹配多个关键字
- 23. 在多行中匹配关键字
- 24. 关键字近似匹配 - 选项?
- 25. 正则表达式 - 匹配关键字
- 26. 反向索引匹配关键字
- 27. SQL server:删除基于关键字匹配的结果全部
- 28. php,sql多个关键字匹配使用LIKE
- 29. Sql返回匹配关键字的产品
- 30. SQL查询查找具有最匹配关键字的行
“标准”是什么意思?你打算有三个不同的列或三个不同的列值? – DonCallisto
发布你有什么尝试... –