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
發佈你有什麼嘗試... –