我想根据一个表中的值是否落入另一个表中的区间来创建两个表之间的关系。一个表1是〜16000行:如何在MySQL中使用区间比较来创建表之间的关系?
name | start | end
-----------------------------------------
someName | startPosition | endPosition
表2是〜2000万行:
id | location
--------------------------
someID | positionInteger
每个ID落在恰好一个名字的间隔,但每个名称可以具有与其相关联的许多IDS 。
我想一个新的索引添加到表2,使之成为:
id | location | name
---------------------------------
someID | positionInteger | someName
我试着这样做:
ALTER TABLE table2 ADD INDEX name (name);
有了一点蟒我可以得到所有的在数据库中,然后对于每个名称和间隔名称:
SELECT someID FROM table2 WHERE location >= startPosition AND location <= endPosition
然后我可以通过将得到的ID和循环:
UPDATE table2 SET name = 'someName' WHERE id = 'someID'
这种方法很有效,但速度很慢。有没有更有效的方式来使用MySQL并避免多个循环?
谢谢。这个解决方案和我Putu Susila的解决方案都运行良好。我能够在更新后将索引添加到新列 – ttunstall