gpt4 book ai didi

mysql问题: is there something like IN ALL query?

转载 作者:行者123 更新时间:2023-11-29 04:59:36 25 4
gpt4 key购买 nike

例如这个查询:

SELECT `variants`.* 
FROM `variants` INNER JOIN `variant_attributes`
ON variant_attributes.variant_id = variants.id
WHERE (variant_attributes.id IN ('2','5'))

变体有_许多变体_属性

我真正想做的是找出哪个变体同时具有 ID = 2 和 5 的变体属性。这对 MySQL 来说可能吗?红利问题,是否有一种使用 Ruby on Rails 或 SearchLogic 可以快速完成此操作的方法?

解决方案

感谢 Quassnoi 提供的查询,效果非常好。

为了在 Rails 上使用,我使用了下面的 named_scope,我认为这对于初学者来说更容易理解。

基本上 named_scope 会返回 {:from => x, :conditions => y} 并且上面的行用于设置 y 变量。

  named_scope :with_variant_attribute_values, lambda { |values|
conditions = ["(
SELECT COUNT(*)
FROM `variant_attributes`
WHERE variant_attributes.variant_id = variants.id
AND variant_attributes.value IN (#{values.collect { |value| "?" }.join ", "})
) = ?
"]
conditions = conditions + values + [values.length]
{
:from => 'variants',
:conditions => conditions
}}

最佳答案

假设 variant_attributes (variant_id, id) 是唯一的:

SELECT  `variants`.*
FROM `variants`
WHERE (
SELECT COUNT(*)
FROM `variant_attributes`
WHERE variant_attributes.variant_id = variants.id
AND variant_attributes.id IN ('2','5')
) = 2

关于mysql问题: is there something like IN ALL query?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2746273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com