gpt4 book ai didi

php - 如何列出数据库中具有重复索引的记录

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

我正在尝试编写一个查询,该查询将从表中提取具有不同值的重复条目的所有记录。目的是使用户能够标记集合中的哪条记录是主要观察结果。

表字段:

idTable (Index), idPlant, idParameter, Value (tinytext), IsPrimary (Yes/No, default No)

我希望能够仅显示具有相同 idPlantidParameter 且值不同的记录,但我想列出实际记录而不是重复次数(这很容易做到)。然后,用户可以为每个(idPlant 和 idParameter) 组选择哪个 idTable 是更新表的主要数据,并将 IsPrimary 设置为"is"。

我确信这一定是可能的,但到目前为止我能看到的唯一方法是 MySQL 和 PHP 处理的多步骤过程。

我认为我无法获得类似问题的答案,因为我将其分组为两列。

我尝试使用 SQL fiddle,但也无法使其工作。因此,我添加了创建 SQL 语句和一些示例数据

我正在尝试创建一个查询,该查询将显示 idPhenotype = 3,4,5(因为其中之一不匹配)和 7,8(再次因为其中一个不匹配)的整个记录​​,但忽略 idPhenotype 10, 11 因为 PhenotypeValue 相同

表 SQL

CREATE TABLE IF NOT EXISTS `phenotype` 
( `idPhenotype` int(10) unsigned NOT NULL AUTO_INCREMENT
, `idPhenotypeDef` int(11) DEFAULT NULL
, `idPlant` mediumint(9) NOT NULL, `PhenotypeParameter` tinytext
, `PhenotypeValue` text
, `PhenotypeDescribedBy` tinytext
, `NewestData` enum('Yes','No') NOT NULL DEFAULT 'Yes'
, PRIMARY KEY (`idPhenotype`)
, UNIQUE KEY `idPhenotype_UNIQUE` (`idPhenotype`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=509165 ;

数据SQL

INSERT INTO `phenotype` (`idPhenotype`, `idPhenotypeDef`, `idPlant`
, `PhenotypeParameter`, `PhenotypeValue`, `PhenotypeDescribedBy`
, `NewestData`) VALUES
(1, 1, 1, 'Front', 'Green', 'Historic Data', 'Yes')
,(2, 1, 2, 'Front', 'Green', 'Historic Data', 'Yes')
,(3, 1, 3, 'Front', 'Green', 'Historic Data', 'Yes')
,(4, 1, 3, 'Front', 'Dark Green', 'Historic Data', 'Yes')
,(5, 1, 3, 'Front', 'Green', 'Historic Data', 'Yes')
,(6, 1, 19, 'Front', 'Green', 'Historic Data', 'Yes')
,(7, 1, 20, 'Front', 'Green', 'Historic Data', 'Yes')
,(8, 1, 20, 'Front', 'Brown', 'Historic Data', 'Yes')
,(9, 1, 205, 'Front', 'Green', 'Historic Data', 'Yes')
,(10, 2, 1, 'Back', 'Green', 'Historic Data', 'Yes')
,(11, 2, 1, 'Back', 'Green', 'Historic Data', 'Yes')
,(12, 2, 12, 'Back', 'Green', 'Historic Data', 'Yes')
,(13, 2, 13, 'Back', 'Green', 'Historic Data', 'Yes')
,(14, 2, 14, 'Back', 'Green', 'Historic Data', 'Yes')
,(15, 2, 15, 'Back', 'Green', 'Historic Data', 'Yes');

http://sqlfiddle.com/#!9/346b4

最佳答案

我相信你需要“HAVING”结构:

试试这个:

SELECT * FROM phenotype
WHERE CONCAT(idPlant,'-',PhenotypeParameter) IN (
SELECT CONCAT(idPlant,'-',PhenotypeParameter)
FROM phenotype
GROUP BY idPlant, PhenotypeParameter
HAVING COUNT(*) > 1
)

关于php - 如何列出数据库中具有重复索引的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37964594/

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