2016-09-01 69 views
-1

任何快速帮助将不胜感激。我在mysql中命名为mob_categories,现在数据正在保存为'|'例如分隔(cat 1|cat 2|cat 3等等。现在我需要从另一列中的值,如果输入值匹配MYSQL Select IN查询使用文字

例如,如果值是猫1我需要从另一列中选择值被命名为deveice_token无论它与“猫1”

比赛我尝试这个代码,但它不是以某种方式工作

SELECT * from table_name where find_in_set('cat 1',mob_categories) <> 0 

,所以我修改了一下下面的代码,但它只有数字值,如果工作值以这种格式以此格式退出(即)1,2,3

$userNotification = $wpdb->get_results("SELECT * from table_name where 1 IN (mob_categories); "); 

什么是我特别丢失?

+1

您应该规范化您的模式,以便在列中没有多个值。 – Barmar

回答

1

由于mob_categories中的数据由|而不是逗号分隔(,),所以您需要首先使其与FIND_IN_SET兼容。

因此先用逗号(,)替换全部|

SELECT * from table_name where find_in_set('cat 1', REPLACE(mob_categories,'|',',')) > 0 
+0

真的吗?没有更好的主意? – Strawberry

+0

如果问题仍然存在,那么我就没有比在MySQL中解决它更好的主意了。如果你想出更好的主意,那么请分享。我期待着它。 @Strawberry – 1000111

+0

有时,我们需要拒绝问题的前提,并重新定义问题。 – Strawberry