SELECT person.fullname FROM person WHERE - NOTEXISTS( - SELECT - * - FROM - location - WHERE NOTEXISTS(SELECT*FROMitineraryWHEREitinerary.p_id=person.idANDitinerary.loc_id=location.id)) ORDERBY person.fullname;
时间: 2024-03-06 22:49:33 浏览: 74
这是一条可以实现查询人员表去过所有地点的人员姓名,查询结果按人员姓名顺序排序的 SQL 查询语句。以下是格式化后的代码:
```
SELECT person.fullname
FROM person
WHERE NOT EXISTS (
SELECT *
FROM location
WHERE NOT EXISTS (
SELECT *
FROM itinerary
WHERE itinerary.p_id = person.id AND itinerary.loc_id = location.id
)
)
ORDER BY person.fullname;
```
该查询语句使用了两个嵌套的 `NOT EXISTS` 子查询,第一个子查询用于找到去过所有地点的人员,第二个子查询用于在去过所有地点的人员中筛选出去过每个地点的人员。同时使用了 `JOIN` 操作,将 `person`、`location` 和 `itinerary` 表连接起来。最后使用 `ORDER BY` 子句按照人员姓名排序。
相关问题
SELECT p.id AS id, p.fullName AS fullName, p.gender AS gender, p.organizationID AS organizationID, o.ORGNAME AS organizationName, p.mobile AS mobile, WM_CONCAT( j.sworkPlaceName ) AS sworkplaceName FROM base_personfile_person p LEFT JOIN sys_org o ON o.ORGID = p.organizationID LEFT JOIN base_personfile_person_sjob pj ON pj.personId = p.id LEFT JOIN base_personfile_sjob j ON j.ID = pj.sjobId WHERE 1=1 GROUP BY p.id 报不是GROUP BY 表达式
这个错误通常是因为 SELECT 语句中的列与 GROUP BY 子句不匹配。在这种情况下,查询引擎无法确定每个组中应该显示哪些值。
在你的查询中,你使用了 WM_CONCAT 函数来聚合 sworkPlaceName 列,但是你没有在 GROUP BY 子句中包括该列。为了解决这个问题,你需要将 sworkPlaceName 列添加到 GROUP BY 子句中,像这样:
```
SELECT p.id AS id, p.fullName AS fullName, p.gender AS gender, p.organizationID AS organizationID, o.ORGNAME AS organizationName, p.mobile AS mobile, WM_CONCAT(j.sworkPlaceName) AS sworkplaceName
FROM base_personfile_person p
LEFT JOIN sys_org o ON o.ORGID = p.organizationID
LEFT JOIN base_personfile_person_sjob pj ON pj.personId = p.id
LEFT JOIN base_personfile_sjob j ON j.ID = pj.sjobId
GROUP BY p.id, p.fullName, p.gender, p.organizationID, o.ORGNAME, p.mobile
```
这应该会解决你遇到的问题。
22.10.10.231450.232161_S-lun0_fip.bin 22.10.10.231450.232161_S-lun1_fip.bin 22.10.10.231450.232161_S-lun2_fip.bin ecarx-image-cluster-e04-dx11-lun.bin 把以上4个文件名一次改成 lun0_fip.bin lun1_fip.bin lun2_fip.bin lun3_fip.bin 在window系统上,做模糊匹配,用脚本实现
可以使用 PowerShell 的通配符来进行模糊匹配,如下所示:
```powershell
Get-ChildItem -Path ".\*" -Filter "*lun*.bin" | ForEach-Object {
$newName = $_.Name -replace ".*lun(\d+).*", "lun$1_fip.bin"
Rename-Item -Path $_.FullName -NewName $newName
}
```
这个脚本会先使用 `Get-ChildItem` 命令获取当前目录下所有以 `lun` 开头、`.bin` 结尾的文件,然后对于每一个文件,将其原始名称中的数字部分提取出来,并且用这个数字替换成新文件名中的数字部分,最终完成重命名操作。
注意,这个脚本会将所有符合条件的文件都进行重命名,因此请确保要重命名的文件确实符合匹配规则。如果有其它类似命名的文件也在当前目录下,可能会被误重命名。
阅读全文