簡體   English   中英

使用以pk分組並具有count(distinct column_name)= 2的column_name IN('one','two')的查詢返回空

[英]query using column_name IN ('one','two') grouped by pk and having count (distinct column_name) = 2 returns empty

使用IN選擇計算機必須匹配的軟件名稱的動態列表,並且數據庫中存在一個已知值的數據,使用時的結果:

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

當它應該返回期望值時,將返回一個空結果集。 注意它在您搜索單個列表項時有效,而該問題在於該列表擴展到多個列表項時。

大量的Google搜索,除了使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM