[英]SQL Server : non-strict WHERE query
我想在一個表上執行Select
查詢,如果至少所有必需的“ X”選項都經過了驗證,即使最后還有更多選項,該查詢也會返回列的值。
NAME | A | B | C | D | E |
------------------------------------
BOB X X X
TOM X X X
WILL X X X
例如:BOB必須至少具有選項B,C和D才有效。 我想要的是無論E或A的值是多少(至少有True),如果B,C和D至少為true,則有一個查詢返回BOB。 B = true,C = true,D = true和A = true的查詢也應返回BOB。
這樣的查詢
Select
Name
From
Table
Where
A = True and B = True and C = True and D = True
返回BOB(因為B,C和D為true)和TOM(因為A,B和C為True),但不會,因為它需要E = true。
你有想法嗎?
謝謝
因此,基本上,您需要評估三個不同的條件,並且如果其中任何一個為真,則選擇名稱。
這是提供的查詢(更改表名和where子句中的“ True”)
Select
Name
From
Table
Where
(B = True and C = True and D = True)
or (A = True and B = True and C = True)
or (C = True and D = True and E = True)
感謝您的意見! 是的,達米安,我認為關系部門可能會有所幫助。 也許我可以更改2個表的結構:
1個表,列出了每個用戶有效所需的選項:t_name
Name | Opt1 | opt2 | opt3 | opt4|
================================
BOB | B | C | D | |
---------------------------------
TOM | A | B | C | |
---------------------------------
WILL | C | D | E | |
---------------------------------
可以通過True或False更新一個表,具體取決於是否以參數形式發送了Option,如果發送了Option,則其值為true(因此,每個請求都必須更新此表以列出可用的選項)
t_option
Option | Status|
================
A | True |
----------------
B | True |
----------------
C | True |
----------------
D | True |
----------------
E | false|
----------------
因此查詢可以是這樣的:
SELECT name FROM t_name
WHERE opt1 IN (SELECT option FROM t_option WHERE status=True)
AND opt2 IN (SELECT option FROM t_option WHERE status=True)
AND opt3 IN (SELECT option FROM t_option WHERE status=True)
AND opt4 IN (SELECT option FROM t_option WHERE status=True)
但我必須確保opt不為空(在示例中opt4為null)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.