我有两个表,一个用于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调用中发生,如果可能的话。谢谢。
答案 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