我有一張看起來像這樣的桌子。
| ID | 價值 | 文本 | 型別 | 路徑 | 啟用 |
|---|---|---|---|---|---|
| 1 | 0 | 未知 | 空值 | 空值 | 真的 |
| 2 | 1 | 生產 | 生產 | 空值 | 真的 |
| 3 | 2 | 閑置的 | 閑置的 | 空值 | 真的 |
| 4 | 3 | 維護 | 維護 | 空值 | 真的 |
| 5 | 4 | 轉換 | 轉換 | 空值 | 真的 |
| 6 | 5 | 打掃 | 打掃 | 空值 | 真的 |
| 7 | 6 | 工程 | 其他 | 空值 | 真的 |
| 8 | 7 | 訓練 | 其他 | 空值 | 真的 |
| 9 | 8 | 暫停 | 閑置的 | 空值 | 真的 |
| 10 | 1 | 跑步 | 生產 | '西雅圖/分揀/第 1 行' | 真的 |
| 11 | 1 | 跑步 | 生產 | '西雅圖/分揀/2號線' | 真的 |
| 12 | 5 | 洗滌 | 打掃 | '西雅圖/分揀/2號線' | 錯誤的 |
| 13 | 10 | 被鎖在外面 | 維護 | '西雅圖/分揀/2號線' | 錯誤的 |
當我使用此代碼,我拿回所有的行用eqPath的NULL。
SELECT *
FROM modes
WHERE eqPath IS NULL
| ID | 價值 | 文本 | 型別 | 路徑 | 啟用 |
|---|---|---|---|---|---|
| 1 | 0 | 未知 | 空值 | 空值 | 真的 |
| 2 | 1 | 生產 | 生產 | 空值 | 真的 |
| 3 | 2 | 閑置的 | 閑置的 | 空值 | 真的 |
| 4 | 3 | 維護 | 維護 | 空值 | 真的 |
| 5 | 4 | 轉換 | 轉換 | 空值 | 真的 |
| 6 | 5 | 打掃 | 打掃 | 空值 | 真的 |
| 7 | 6 | 工程 | 其他 | 空值 | 真的 |
| 8 | 7 | 訓練 | 其他 | 空值 | 真的 |
| 9 | 8 | 暫停 | 閑置的 | 空值 | 真的 |
現在我需要一個回傳同一個表的,但是如果用戶請求一個特定的eqPath,那么它也會顯示在串列中,但是值列必須是唯一的,其中包含eqPath的行用NULL
eqPath.
| ID | 價值 | 文本 | 型別 | 路徑 | 啟用 |
|---|---|---|---|---|---|
| 1 | 0 | 未知 | 空值 | 空值 | 真的 |
| 11 | 1 | 跑步 | 生產 | '西雅圖/分揀/2號線' | 真的 |
| 3 | 2 | 閑置的 | 閑置的 | 空值 | 真的 |
| 4 | 3 | 維護 | 維護 | 空值 | 真的 |
| 5 | 4 | 轉換 | 轉換 | 空值 | 真的 |
| 12 | 5 | 洗滌 | 打掃 | '西雅圖/分揀/2號線' | 錯誤的 |
| 7 | 6 | 工程 | 其他 | 空值 | 真的 |
| 8 | 7 | 訓練 | 其他 | 空值 | 真的 |
| 9 | 8 | 暫停 | 閑置的 | 空值 | 真的 |
| 13 | 10 | 被鎖在外面 | 維護 | '西雅圖/分揀/2號線' | 錯誤的 |
這是我正在嘗試的代碼,但我意識到這是錯誤的。
SELECT DISTINCT *
FROM modes
WHERE eqPath = ?
OR eqPath IS NULL
GROUP BY value
uj5u.com熱心網友回復:
您可以使用ROW_NUMBER來標記行并在過濾器中使用它以獲得預期的結果。
一個 sql 查詢將類似于 -
select id, value, text, type, eqPath, enabled
from
(select * ,
row_number() over( partition by value order by eqPath desc) rn
from <your-table>
where (eqPath is null or eqPath = ?) ) tbl
where rn = 1
order by value
該row_number查詢將會把每個行和復位行號當值發生變化,所以最后用行號匹配1將那些我們需要獲取這些行。
這是一把小提琴
uj5u.com熱心網友回復:
我想我想出了一個解決方案:
SELECT *
FROM modes
WHERE eqPath IS NULL
AND value NOT IN (
SELECT value
FROM modes
WHERE eqPath = ?
)
UNION
SELECT *
FROM modes
WHERE eqPath = ?
ORDER BY value
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/385380.html
標籤:sql sql-server 查询语句
上一篇:你能插入一個表,其中一個值是mysql中的宣告變數嗎?[復制]
下一篇:SQL重新排序和選擇列
