0
我有设置的表,其可以被示出为: 的object_id(INT) 键(VARCHAR) 值(文本)的MySQL - 加入根据2个密钥的表从一个键/值表
我试图抓住具有等于2项的键的object_id。
SELECT `object_id` FROM `settings` WHERE `key` = 'A' AND `key` = 'B'
我知道这是行不通的,我能想到这样做的唯一的办法就是加入它本身:
SELECT a.`object_id` FROM `settings` AS a LEFT JOIN `settings` AS b ON (a.`object_id` = b.`object_id`) WHERE a.`key` = 'A' and b.`key` = 'B'
虽然我没有测试过的最后一条语句,我肯定这样的事情可以工作。这个查询将每小时执行数十万条记录,所以我想保持它的优化 - 有没有更好的方法来做到这一点?
感谢 - 正是我一直在寻找的 - 这将是可以指定值来匹配那些键?如果'key' ='a'AND'value' ='b'? – 2010-09-30 21:33:45
@Kerry:对不起?那些是不同的列和值,不需要JOIN或GROUP BY/HAVING – 2010-09-30 21:36:32
是的 - 我的头脑现在有点混乱,画几个空白,谢谢 - 你的解决方案是完美的(不知道第一个是可能) – 2010-09-30 21:39:02