gpt4 book ai didi

mysql - 修改 SQL MAX 查询以查找相应字段的值

转载 作者:行者123 更新时间:2023-11-29 04:28:04 25 4
gpt4 key购买 nike

我有以下查询:

$imgDimensions_query = "SELECT MAX(imgWidth) maxWidth, MAX(imgHeight) maxHeight FROM (
SELECT imgHeight, imgWidth FROM primary_images WHERE imgId=$imgId
UNION
SELECT imgHeight, imgWidth FROM secondary_images WHERE primaryId=$imgId) as MaxHeight";

效果很好,但我想知道如何找到 imgId 列的值,以及 maxWidthmaxHeight 值?

我想要这个的原因是我需要知道 maxWidthmaxHeight 值是否属于数据库中的同一项目。

我想知道这是否可以通过修改当前的 SQL 查询来实现?


如果在查询 maxWidthmaxHeight 值的同时,可以设置一个 bool 值来输出 true 如果maxWidthmaxHeight 属于同一条目(至少一次)。

我在想,由于 primary_images 中的图像数据与 secondary_images 中的数据是唯一的(反之亦然),因此可以在每个中设置一个 bool 值查询,只要存在一个true,就输出true。那有意义吗?这可能吗?


我设法组合了第二个查询,它使用第一个查询中的 maxWidthmaxHeight 的值来输出特定集合中包含的图像数量两个值。我真正关心的是是否有或者没有满足上述要求的一张或多张图片,所以再说一次, bool 值会比总数更好数字。如果您知道如何修改以下内容以显示 bool 值而不是结果数,请告诉我!

我很放心,因为两个表中的最大条目数都在 1000 以下,使用两个查询而不是一个查询应该不会影响速度。如果您也这么认为,并且如果将这些查询合并为一个是荒谬的,那么也请告诉我。

第二个查询:

$haveDimensions_query = "SELECT sum(rows) AS total_rows FROM (
SELECT count(*) AS rows FROM primary_images WHERE imgId = $imgId and imgWidth = $maxImageWidth and imgHeight = $maxImageHeight
UNION ALL
SELECT count(*) AS rows FROM secondary_images WHERE primaryId = $imgId and imgWidth = $maxImageWidth and imgHeight = $maxImageHeight
) as union_table";

最佳答案

[下面是原答案——这样应该会更好]

我想我误解了你的问题。以下查询应给出一个结果集,其中包含与所有图像相比具有最大高度或最大宽度的每个图像的一行,并且行中将包含 ID 和表名称以及高度和宽度。

由于最大高度和宽度可能不是来自同一图像,因此结果中不一定只有一行具有单个图像 ID 和表格源。

我希望这至少更接近您要找的东西。

SELECT
imgId,
tName,
imgWidth,
imgHeight
FROM (
SELECT imgId, 'Primary' tName, imgHeight, imgWidth
FROM primary_images WHERE imgId=$imgId
UNION
SELECT imgId, 'Secondary' tName, imgHeight, imgWidth
FROM secondary_images WHERE primaryId=$imgId
) as T
WHERE
(T.imgHeight >= (SELECT MAX(imgHeight) FROM primary_images)
AND
T.imgHeight >= (SELECT MAX(imgHeight) FROM secondary_images)
)
OR
(T.imgWidth >= (SELECT MAX(imgWidth) FROM primary_images)
AND
T.imgWidth >= (SELECT MAX(imgWidth) FROM secondary_images)
)

-- 下面是原始答案--

尝试这样的事情:

   SELECT
imgId,
tName,
MAX(imgWidth) maxWidth,
MAX(imgHeight) maxHeight FROM (
SELECT imgId, 'Primary' tName, imgHeight, imgWidth
FROM primary_images WHERE imgId=$imgId
UNION
SELECT imgId, 'Secondary' tName, imgHeight, imgWidth
FROM secondary_images WHERE primaryId=$imgId
) as T
GROUP BY imgId, tName;

(MaxHeight 不是派生表的好别名,因为它不是最大高度的表。我将其更改为 T。)

关于mysql - 修改 SQL MAX 查询以查找相应字段的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7425936/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com