所以我目前面临一个问题。我想从我的表中选择一行(dlUser)。问题是当Active设置为'No'时,我们将重新使用dlUser编号。我将尝试使用下面的示例表进行解释:
| ID | Active | dlUser |
-------------------------------------
| 1 | Yes | 100 |
| 2 | No | 100 |
| 3 | No | 101 |
| 4 | No | 101 |
所以我想选择dlUser,其中Active ='No',但也选择Active不是Yes。因此,我想在这里获得的输出将是dlUser:101(因为它当前没有“正在使用”,因此可以再次使用)。我们每次只能有1个dlUser号码“有效”。
非常感谢任何协助。
提前谢谢。
答案 0 :(得分:0)
听起来您想要选择未在任何行中列为活动状态的dlusers。这是一个简单的" NOT IN"查询,您选择所有的"不在"活跃用户列表。
试试这样:
procedure GetPathFromProcessList(List: TStringList);
var
Shot: THandle;
Proc: THandle;
Data: TProcessEntry32;
Path: array[0..MAX_PATH - 1] of Char;
begin
Shot := CreateToolHelp32Snapshot(TH32CS_SNAPALL, 0); //TH32CS_SNAPPROCESS
if (Shot <> 0) then
try
List.Sorted := True;
List.Duplicates := dupIgnore;
List.BeginUpdate;
if (Process32First(Shot, Data)) then
repeat
// PROCESS_QUERY_LIMITED_INFORMATION = $1000
Proc := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, False, Data.th32ProcessID);
if (Proc <> 0) then
try
if (GetModuleFileNameEx(Proc, 0, Path, MAX_PATH) <> 0) then
List.Add(LowerCase(Path));
finally
CloseHandle(Proc);
end;
until (not Process32Next(Shot, Data));
List.EndUpdate;
finally
CloseHandle(Shot);
end;
end;
答案 1 :(得分:0)
我相信以下内容应该能满足我对你问题的理解。在表示例中,您只能返回dblUser 101。
SELECT DISTINCT dlUser
FROM t
WHERE NOT dlUser NOT IN
(SELECT dlUser
FROM t
WHERE Active = 'Yes')
如果您正在构建可能会成为非常大的表格,那么我不会推荐这种方法,因为查询将开始滞后。