首先,我需要以下选择:
select post_id, meta_key, meta_value
from wp_postmeta
where (meta_key = 'price_range' OR
meta_key = 'price_input' OR
meta_key = 'price_input_currency')
然后我得到如下表的结果:
然后我需要根据以下两个条件筛选出记录,方法是查看具有相同ID的每组3行。
根据以下两个条件,我只能看到红色框中的行组。
①首先,仅显示price_range
为meta_key
的群组。
仅显示meta_key = 'price_range'
作为每行post_id
三行之一的行。
②仅显示meta_key为空meta_value
的组:price_input
但不包含meta_key的空{:1}}。
基本上是这样的:
price_range
和
meta_key = 'price_input' AND (meta_value = '' OR meta_value = null)
我不能在具有不同meta_key = 'price_range' AND (meta_value != '' OR meta_value != null)
但相同meta_key
的行之间使用AND,但使用OR我无法获得所需内容。所以我很困惑我应该怎么做。
我的问题的原因:
我正在尝试续订我的数据,以及字段' price_range'不再使用了。我会将这些信息放在两个新字段中:' price_input'和' price_input_currency'。这就是为什么我想要快速检查哪些商品仍然有价值' price_range'但是新领域还没有数据 因此,红色行具有price_range的值,但没有price_input的值。那些是我正在寻找的。 p>
答案 0 :(得分:0)
如果我理解正确,您希望每个post_id最多包含三个项目,每个项目都能满足您的where语句。 如果是这样,您可以使用GROUP BY和LIMIT
<强>被修改强>
所以我一直在寻找你的问题,我找到了一个很好的参考 http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-per-group-in-sql/
当您在此处导航时,不太好的消息是您的案例中的group by语句可能无法修复(与链接中的类型apple / banana / etc不同)。
我相信如果组的数量没有修复,那么你将不得不求助于循环:
(这只是网站上的一个例子,在我根据您的需要修改此代码之前,我需要稍微睡一觉)
/// resize image to fit in show area without changing image ratio
+ (CGSize)resizeImageViewFromImageSize:(CGSize)imageSize toFitShowSize:(CGSize)showSize {
CGFloat ratioW = imageSize.width / showSize.width;
CGFloat ratioH = imageSize.height / showSize.height;
CGFloat ratio = imageSize.width / imageSize.height;
if (ratioW > 1 && ratioH > 1) {
if (ratioW > ratioH) {
imageSize.width = showSize.width;
imageSize.height = imageSize.width / ratio;
} else {
imageSize.height = showSize.height;
imageSize.width = imageSize.height * ratio;
}
} else if (ratioW > 1) {
imageSize.width = showSize.width;
imageSize.height = imageSize.width / ratio;
} else if (ratioH > 1) {
imageSize.height = showSize.height;
imageSize.width = imageSize.height * ratio;
} else {
if (ratioW > ratioH) {
if (showSize.width / imageSize.width <= 2) {
imageSize.width = showSize.width;
imageSize.height = imageSize.width / ratio;
}
} else {
if (showSize.height / imageSize.height <= 2) {
imageSize.height = showSize.height;
imageSize.width = imageSize.height * ratio;
}
}
}
return imageSize;
}
话虽如此,我实际上建议不要在数据库级别上执行此逻辑(除非您只是这样做才能学习),因为数据库已经过优化以获取和存储变量。您可能希望在服务器级别实现此逻辑,或者不使用RDB。
抱歉最初错误的帖子=(