1
A
回答
1
你不能在MySQL中爆炸。我强烈建议你将表重构为关系型(即每个名称和价格应该占据一行)。
可能通过子字符串进行某种类型的数值比较,但我认为查询整个表格并通过php过滤结果会容易得多(我假设您使用的是php,因为您说的是explode
,其他语言通常称为split
)。
foreach ($rows as $row) {
$names = explode("|", $row["name"]);
foreach (explode("|", $row["price"] as $idx => $price) {
if ($price > 150) {
$all_names[] = $name[$idx];
}
}
}
这当然假设名称/价格列索引正确对齐。这也是昂贵的,因为它必须查询整个表并且不使用任何(MySQL)索引。
数据标准化的,你可以做的是有一个名为Groups
表具有groupID
。然后你有当前表与GroupID, name, price
元组。您的数据是这样的:
groupID name price
1 a 100
1 b 200
1 c 150
2 x 150
2 y 100
2 z 160
然后,你可以简单地检查WHERE price > 150
,这将是非常快,如果price
进行索引。它也可以让你按组搜索 - 这在某些情况下可能有用,甚至更快。
要根据您已有的表格设置上述表格,您必须查询整个表格,然后查询名称/价格,并通过相应索引插入现有组ID。
相关问题
- 1. NEST条件筛选查询
- 2. MySQL查询的WHERE条件大表
- 3. MySQL查询的WHERE条件问题
- 4. MySQL如果条件where条款查询
- 5. Solr中的条件筛选查询
- 6. WHERE子句中的条件筛选器
- 7. MySQL的条件选择基于查询的WHERE子句
- 8. 如何使用where子句中的列条目筛选查询
- 9. MySQL select where查询条款
- 10. MySQL使用字符串变量的where条件选择查询
- 11. MySQL查询打破WHERE条件
- 12. Mysql查询和条件where子句
- 13. 根据条件筛选查询
- 14. Mysql筛选子查询
- 15. MySql筛选器组查询
- 16. MySQL Where Where查询
- 17. Mysql的WHERE查询
- 18. MYSQL - 选择查询Where条件是指同一台
- 19. 额外的mysql选择查询条件?
- 20. Mysql的选择查询条件
- 21. Where条件和子查询
- 22. mysql中可选的where子句条件
- 23. WHERE使用查询条件的两列
- 24. SQL查询的WHERE条件和或
- 25. SQL Server查询的WHERE条件
- 26. 筛选条件
- 27. laravel5中的where条件中的两个子选择查询?
- 28. mySQL中的条件查询
- 29. 有条件的MySql查询
- 30. MySQL的条件子查询
http://stackoverflow.com/questions/471914/can-you-split-explode-a-field-in-a-mysql-query http://stackoverflow.com/questions/5928599/equivalent-使用字符串在mysql中工作 –
1.标准化您的数据 – Strawberry
Hello,Jaywalker反模式!在创建查询时,不要试图处理分隔符分隔的值,而应该拆分值并将它们存储在链接表中 - 这将一劳永逸地解决所有问题 –