gpt4 book ai didi

php - 从一个字段具有最多数值的数据库中选择

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

我确信有办法做到这一点,但由于我对 MySQL 和 PHP 还是新手,所以我无法弄清楚。

我有一个表,其中第一列 (base_folder) 代表一个文件夹,该文件夹 (sub_folder) 中有多个图像。最后一个字段(图层)表示图像顺序。我需要得到的是层列中 base_folder、sub_folder、image_、image_type 和 View 相同的最大数量。

有人知道怎么做吗?

这是表格:

+-------------------------------------------------------------------------+|                                BASE_IMAGE                               |+-----+-------------+------------+-------------+----------+-------+-------+| id  | base_folder | sub_folder | image       |image_type|  view | layer |          +-----+-------------+------------+-------------+----------+-------+-------+|  1  | CUP0001     |   F        | B_FF_0.png  |   B      |   FF  |   0   |+-----+-------------+------------+-------------+----------+-------+-------+|  2  | CUP0001     |   F        | B_FF_0.png  |   B      |   FF  |   1   |+-----+-------------+------------+-------------+----------+-------+-------+|  3  | CUP0001     |   F        | B_FF_0.png  |   B      |   FF  |   2   |+-----+-------------+------------+-------------+----------+-------+-------+|  4  | CUP0001     |   F        | B_FF_0.png  |   M      |   FF  |   0   |+-----+-------------+------------+-------------+----------+-------+-------+

我想得到的是“2”,其中 base_folder['CUP0001']、sub_folder['F']、image['B_FF_0.png']、image_type['B']、view['FF '],层['2']

最佳答案

原始问题的直接答案是:

SELECT MAX(layer)
FROM Base_Image
WHERE Base_Folder = 'CUP0001'
AND Sub_Folder = 'F'
AND Image = 'B_FF_0.png'
AND Image_Type = 'B'
AND View = 'FF';

如果您需要五个字段的每个组合的最大层,那么您需要一个 GROUP BY 子句并且您还需要选择标识列:

SELECT Base_Folder, Sub_Folder, Image, Image_Type, View, MAX(layer) AS MaxLayer
FROM Base_Image
GROUP BY Base_Folder, Sub_Folder, Image, Image_Type, View;

(撤回: 看起来很可疑,好像您的表没有正确规范化;至少有空间假设 Base_Folder、Sub_Folder、Image 的组合控制 Image_Type 和 View 的值。但是,无论此评论是否准确,显示的代码都将起作用。)


If the long combinations are not good, [...] do you have a suggestion on a better approach?

这取决于数据量以及您将如何管理数据。它还取决于数据的哪些部分是独立的。我很想将表格分成两张,尽管极端的观点可能会达到五张表格:

  • ImageFile 列(ID、Base_Folder、Sub_Folder、Image),在(Base_Folder、Sub_Folder、Image)上具有主键 ID 和备用键(唯一约束)。
  • ImageDetails(ID、ImageFileID、Image_Type、View、Layer,带有主键 ID、备用键(ImageFileID、Image_Type、View、Layer)和引用 ImageFile.ID 的外键 ImageFileID。<

ImageDetails 的另一种设计避免了 ID 列,而是使用备用键作为主键。这在一定程度上取决于是否有任何其他内容将引用此表中的行。

但是,这完全取决于您要做什么以及数据的实际组织方式(您显示的表中的函数依赖项是什么)。极端 View 将使用: 基本文件夹的一个表;然后会有一个带有基本文件夹 ID 和子文件夹名称及其自己的 ID 字段的子文件夹表,然后会有一个带有自己的 ID、子文件夹 ID 和图片名称;然后每个图像文件的每个图像类型都有一个图像类型表(有自己的 ID 加上 FK);等等。这更难插入行;每个需要过滤的选择操作,比如说,基本文件夹和图像类型都需要加入很多表。这不一定很慢,但它会使 SQL 复杂化。

关于php - 从一个字段具有最多数值的数据库中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6642362/

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