我有一个包含以下行的表。
tbl图片
我想运行一个查询来选择例如所有带有galleryID=3和的图片isActive=1
如果此选择中没有图片且 isActive 行为 1(换句话说,查询不返回任何结果)我想isActive=1用galleryID=3
任何人都可以指导我吗?
干得好。基本上,它会检查该集中是否有任何活动记录,如果没有,则更新第一个(由 picID 确定)。如果愿意,您可以将其粘贴在存储过程或函数中,或者仅运行脚本并手动更改图库 ID。
DECLARE @Count INT,
@GalleryID INT
SET @GalleryID = 3
SELECT @Count = COUNT(*)
FROM tblPictures
WHERE galleryID=@GalleryID and isActive=1
IF @Count = 0
BEGIN
UPDATE tblPictures
SET isActive = 1
WHERE picID = (
SELECT TOP 1 picID
FROM tblPictures
WHERE galleryID = @GalleryID
ORDER BY picID
)
END
Run Code Online (Sandbox Code Playgroud)
摩尔代码
这应该更新没有活动图片的任何图库中的第一张图片(通过 picID):
UPDATE tblPictures
SET isActive = 1
WHERE picID IN (
SELECT picID
FROM (
SELECT galleryID, MIN(picID) AS 'picID'
FROM tblPictures AS p
JOIN (
SELECT galleryID
FROM tblPictures
WHERE isActive = 1
) AS s ON p.galleryID <> s.galleryID
GROUP BY galleryID
)
)
Run Code Online (Sandbox Code Playgroud)
最里面的子查询查找确实有活动图片的画廊。下一步查找不包括有图片的画廊 ID。然后我们为每个 galleryID 找到最低的 picID 并使用它们来更新表。
| 归档时间: |
|
| 查看次数: |
12027 次 |
| 最近记录: |