0

我有一列 MEDIUMTEXT 包含来自 goup_concat 的值,格式为 INT,INT,INT 。我们可以称之为 Concatenated_IDs

字符串的长度可以是 1 个 int 或更多。

我需要以某种方式将其分解为原始值才能执行诸如

SELECT
  table_country.name
FROM
  table_country 
WHERE
  table_country.country_id IN (
   SELECT
     Concatenated_IDs
   FROM
     table_targeted_countries 
   WHERE
     table_targeted_countries.email LIKE "%gmail.com")

并获取用户使用 gmail 地址目标注册的国家/地区名称。

我考虑过将 mediumtext 分解为 INT,为每个 int 创建一行,有点像反向连接,但我猜这需要一个很大的过程

编辑:重新制定的问题名称

4

1 回答 1

4

您可能应该规范化该表,因此这些连接的 id 存储在一个单独的表中,每条记录一个 id。但与此同时,您可以使用mysql的find_in_set()功能:

SELECT ...
WHERE FIND_IN_SET(table_country.country_id, Concatenated_IDs) > 0

相关文档:http ://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_find-in-set

于 2013-05-03T14:29:06.773 回答