优化SQL语句:选择多个值

时间:2017-03-18 22:02:18

标签: php mysql sql arrays

我想减少我的SQL查询。在这里你可以看到我的表的一个例子: enter image description here

此语句返回我的字段数量(0-3):

SELECT COUNT(meta_key) FROM `fWR6qIN_postmeta` Where meta_key like 'product_shops_%_price' AND (post_id = 7951)

在这种情况下,我得到一个4.所以我有0到3字段的值。对于我需要的每个数字product_shops_%_priceproduct_shops_%_price_oldproduct_shops_%_shopproduct_shops_%_link 。所以,4 * 4 = 16个值。 现在我想将查询从4个查询减少到1个。以前我问过每隔4个字段。所以我得到4个值为0,值为1,所以...

我的计划现在是优化SQL语句并一次选择所有16个值。有没有人有计划如何做到这一点?

而且,如果我可以打包一个数组中包含0的所有值,包含数组中的1等等,那将是非常好的...所以我可以轻松地迭代它们。

我会非常感谢帮助! 问候!

1 个答案:

答案 0 :(得分:0)

这不是你想要的吗?

SELECT *
FROM `fWR6qIN_postmeta` pm 
WHERE meta_key like 'product_shops_%' AND 
      post_id = 7951;

编辑:

这应该做你想要的:

SELECT *
FROM `fWR6qIN_postmeta` pm 
WHERE meta_key regexp '^(product_shops)_(link|price|price_old|shop)$' AND 
      post_id = 7951;

您也可以使用单独的like表达式执行此操作:

SELECT *
FROM `fWR6qIN_postmeta` pm 
WHERE post_id = 7951 AND
      (meta_key like 'product_shops_%_price' OR 
       meta_key like 'product_shops_%_link' OR 
       meta_key like 'product_shops_%_price_old' OR 
       meta_key like 'product_shops_%_shop'
      );