PHP PDO SQlite单次查询,以查找仅出现一次的值,并以逗号分隔的值作为行
例如,我有下表:PHP PDO SQlite单次查询,以查找仅出现一次的值,并以逗号分隔的值作为行,php,sqlite,Php,Sqlite,例如,我有下表: id Name - Target 1 A B 2 C D,G 3 E D 4 F G,B 5 L M,D,B 6 Q G,N 我有一个超过200万条记录的数据库,我想我在一行中用逗号存储值时犯了一个错误。 我的目标是在“Target”行上查询整个数据库,以获得唯一的、不重复的值,在我的示例中,查询应该只返回“M”和“N”,因为“B
id Name - Target
1 A B
2 C D,G
3 E D
4 F G,B
5 L M,D,B
6 Q G,N
我有一个超过200万条记录的数据库,我想我在一行中用逗号存储值时犯了一个错误。
我的目标是在“Target”行上查询整个数据库,以获得唯一的、不重复的值,在我的示例中,查询应该只返回“M”和“N”,因为“B”、“D”和“G”是重复的
是否有一个查询行来完成此操作?我同意您应该更改数据库架构 您的问题看起来像是重复的: 因此,如果您真的需要,您的方法可以是:
请注意,您需要在表的
target
列中将numbers
表的值设置为从1到值的最大索引。我同意您应该更改数据库架构
您的问题看起来像是重复的:
因此,如果您真的需要,您的方法可以是:
请注意,您需要在表的
target
列中将numbers
表的值设置为从1到最大的值索引。@草莓(关于“我认为我犯了错误?”:)谢谢。再次更正;-)@草莓,是不可能的吗?历史上从未发生过这样的事情?:)首先,规范化您的数据。我可以想象这样一种情况:我的“目标”是一个“注释”,查询将在整个数据库中搜索唯一的单词。“我想我犯了一个错误?”上的@草莓说:“没有一行是这样的,谢谢。”。再次更正;-)@草莓,是不可能的吗?历史上从未发生过这样的事情?:)首先,规范化您的数据。我可以想象这样一种情况:我的“目标”是一个“注释”,查询将在整个数据库中搜索唯一的单词。没有一个单行查询?谢谢你的努力。谢谢你的努力。
SELECT
SUBSTRING_INDEX(SUBSTRING_INDEX(t1.Target, ',', numbers.n), ',', -1) letter
FROM
numbers
INNER JOIN t1
ON CHAR_LENGTH(t1.Target)
-CHAR_LENGTH(REPLACE(t1.Target, ',', ''))>=numbers.n-1
GROUP BY letter
HAVING COUNT(*)=1