代码之家  ›  专栏  ›  技术社区  ›  Jeriko

MySQL在选择时连接到列

  •  2
  • Jeriko  · 技术社区  · 14 年前

    我正在处理一个遗留数据库,在编写搜索查询时遇到了一些问题。

    有关的两张桌子是 products tours

    我的常规查询如下所示:

    SELECT products.*, tours.* FROM products INNER JOIN tours 
    ON products.id=tours.product_id
    GROUP BY products.id
    

    现在我有麻烦了。这个 产品 表包含一列, countries 13|45|33|29|133|337 . 我需要返回一份 33 .

    为了简单起见,我可以 where products.countries LIKE '%33%' 133 337 也。我需要使用 where products.countries LIKE '%|33|%'

    SELECT products.*, tours.*, CONCAT("|",products.countries,"|") AS country_list
    FROM products INNER JOIN tours ON products.id=tours.product_id
    GROUP BY products.id
    

    但如果我想补充 WHERE country_list LIKE '|%33%|' ,我得到一个 "undefined index: country_list" 错误。。

    我做错什么了?

    2 回复  |  直到 14 年前
        1
  •  3
  •   JochenJung    14 年前

    别名在WHERE子句中不可用。只是在有条款

    “可以在查询选择列表中使用别名为列指定其他名称。您可以在GROUP BY、ORDER BY或HAVING子句中使用别名来引用列“ 1

    所以你要么

    HAVING country_list LIKE '|%33%|'
    

    或者斯科特发布的没有化名的satement。

        2
  •  5
  •   Scott Saunders    14 年前

    您可以使用:

    WHERE CONCAT("|",products.countries,"|") LIKE '%|33|%'