gpt4 book ai didi

mysql - 使用 column_name IN ('one' ,'two' ) 进行查询,按 pk 分组且 count (distinct column_name) = 2 返回空

转载 作者:行者123 更新时间:2023-11-29 09:45:00 24 4
gpt4 key购买 nike

使用IN选择计算机必须匹配的软件名称动态列表,并且数据库中存在已知值的数据,使用时的结果:

GROUP BY id
HAVING COUNT(DISTINCT column_name) = count_of_list_values;

当它应该返回期望的值时返回一个空结果集。注意,当您搜索单个列表项时,它会起作用,当该列表扩展到多个列表项时,就会出现此问题。

大量的谷歌搜索,没有得到任何有用的结果......除了使用 phpmyadmin 之外,我一直在试图找出它失败的原因。

隔离了似乎令人窒息的区域,并通过查询尝试不同的操作以使其正常工作。

这是我正在使用的查询部分。

SELECT
am_software_archive.asset_name
FROM
am_software_archive
WHERE
LOWER(am_software_archive.sw_name) IN('nodejs', 'visio 2013')
GROUP BY
am_software_archive.id
HAVING
COUNT(
DISTINCT am_software_archive.sw_name
) = 2

此表中的数据存在且有效,因此它应该有效...表定义

CREATE TABLE IF NOT EXISTS am_software_archive(
id BIGINT NOT NULL UNIQUE,
asset_name VARCHAR(10) NOT NULL,
sw_name VARCHAR(150) NOT NULL,
sw_developer BIGINT NOT NULL,
sw_key VARCHAR(50) DEFAULT NULL,
sw_osver VARCHAR(15) DEFAULT NULL,
CONSTRAINT PK_software PRIMARY KEY(id, asset_name),
INDEX idx_sw_name_asset(asset_name,sw_name),
INDEX idx_sw_key_asset_name(asset_name,sw_key),
INDEX idx_sw_name_sw_key(sw_name,sw_key),
INDEX idx_osver_sw_name(sw_name,sw_osver),
INDEX idx_osver_asset_name(asset_name,sw_osver)
)

在我的数据库中,预期结果是:“ABX50269”

实际结果是空的,但不应该是空的。

最佳答案

您按id进行分组,该id是唯一的,因此每个id不可能有两个或多个(不同的)sw_name

由于 asset_nameSELECT 列表中的列,我认为您实际上想按 asset_name 进行分组。

关于mysql - 使用 column_name IN ('one' ,'two' ) 进行查询,按 pk 分组且 count (distinct column_name) = 2 返回空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55838630/

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