Mysql IN条件限制

时间:2012-08-01 23:11:45

标签: mysql sql database

我有两个表,一个用于Strains,另一个用于StoreStrains。商店出售菌株,因此“StoreStrains”中可能有多个条目用于某个strain_id。

我正打电话从Strain桌上抓住所有Strains。然后我像那样“1,2,3,4,5”映射那些strain_ids。然后,我正在进行另一次SQL调用,以查找哪些商店存在这些压力。

SELECT * FROM StoreStrains
WHERE strain_id IN (strain_ids)
LIMIT 5

正如您所料,这将返回所有StoreStrains,其strain_id为1-5。但如果其中3个商店带有相同的应变,我会返回8个结果,但我限制为5个。

在更大的范围内(在具有500,000+ StoreStrains的数据库中),只是增加“获得所有结果”的限制根本不是一个好的选择。所以我想知道是否有限制方式

WHERE strain_id IN (strain_ids)

每个结果为1个结果

我知道我可以像这样做5个单独的SQL调用:

SELECT * FROM StoreStrains Where strain_id = ? LIMIT 1

但我更希望这一切都在一个sql调用中发生,如果可能的话。谢谢。

1 个答案:

答案 0 :(得分:0)

如果您想随意挑选商店,请执行此操作

Select strain_id,
       (Select StrainStore.id
        from StrainStore
        Where StrainStore.strain_id = Strains.strain.id
        Limit 1)
From Strains

但这样做可能会更好

Select Strains.strain_id, GROUP_CONCAT(StrainStore.id)
From Strains
Join StrainStore
    On (Strains.strain_id = StrainStore.strain_id)
Group by Strains.strain_id