假設我有兩個表,其中第一個包含我的資料:
| 自動的 | 手動的 |
|---|---|
| X1 | X1 |
| 是 | Y27 |
和查找表
| 抬頭 |
|---|
| X1 |
| Y27 |
| ... |
我想從第一個表中選擇值,如果它包含在查找表中。所以對于第二行,它應該取值 Y27,因為 Y 不在查找表中。
我用這個查詢試過了:
Select
Switch(
Automatic in (SELECT Lookup FROM LookupTable), Automatic,
True, Manual,
) AS ValidEntry
FROM Datatable;
我的文本查詢:檢查“Automatic”中的值是否在查找表中,如果是 -> 取值,如果不是,則從另一列“manual”中取值并回傳一個名為“ValidEntry”的條目。
uj5u.com熱心網友回復:
使用 INNER JOIN,它應該快得多。
select somedata from table1 t
inner join lookupTbl l on l.lookupfield = t.automatic
使用 IN 子句:
select somedata from table1 t
WHERE t.automatic IN (select lookupfield FROM lookupTbl)
uj5u.com熱心網友回復:
這是你需要做的:
SELECT NZ( LookupTableAutomatic.Lookup, LookupTableManual.Lookup) AS Lookup
FROM (LookupTable AS LookupTableManual INNER JOIN DataTable
ON LookupTableManual.Lookup = DataTable.Manual)
LEFT OUTER JOIN LookupTable AS LookupTableAutomatic ON LookupTableAutomatic.Lookup = DataTable.Automatic;
作為解釋,如果 NZ 函式不為空,則回傳第一個引數,否則采用第二個引數。查找表加入了兩次:手動查找是內部聯接,因為我假設總會有一個回退值,而自動查找是作為外部聯接加入的,這意味著它在值不匹配時回傳 NULL .
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/367251.html
下一篇:沒有具有鍵“ddlcontent”的“IEnumerable<SelectListItem>”型別的ViewData項
