【问题标题】:Optimize SQL Statement: Select multiple values优化 SQL 语句:选择多个值
【发布时间】:2017-03-18 22:02:17
【问题描述】:

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

此语句返回我拥有的字段数量 (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_%_price、product_shops_%_price_old、product_shops_%_shop 和 product_shops_%_link。因此,4 * 4 = 16 个值。 现在我想将我的查询从 4 个减少到 1 个。以前我问每 4 个字段分开。所以我得到了 0 的 4 个值,1 的值,等等……

My Plan Now 是对 SQL 语句和一次选择所有 16 个值的优化。有没有人计划我如何做到这一点?

此外,如果我可以将包含 0 的所有值打包到一个数组中,所有包含 1 的值都打包在一个数组中等等……这样我就可以轻松地遍历它们。

如果能得到帮助,我将不胜感激! 问候!

【问题讨论】:

    标签: php mysql sql arrays


    【解决方案1】:

    这不是返回你想要的吗?

    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'
          ); 
    

    【讨论】:

    • 没有。 product_shops_0_... 还有很多其他值。所以我只需要这 4 种不同的字段!
    • 是的,这行得通。我的进一步问题是,我如何遍历 PHP 中的所有值,但字段数匹配的一个数组中的每个值?
    • @FrazeJr。 . . .您应该使用 PHP 标记提出这个问题,因为它专门针对 PHP 代码。
    猜你喜欢
    • 2014-06-24
    • 2013-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-11
    • 1970-01-01
    • 2021-06-02
    相关资源
    最近更新 更多