MySQL查询中的单引号不适用于concat()

天空
SELECT `osid`,`os_name`,     
       (SELECT count(*)
       FROM `game_game`
       WHERE concat(',',`os`,',') LIKE ('%,`os`.`osid`,%') ) as game_count
 FROM `game_os` AS os ORDER BY `osid`

两个SQL表

game_os

osid (PK)
os_name

game_game

game_id (PK)
game_name
os (save data format : 1,2,3) (1,2,3 = osid)

此SQL查询game_count从不= 0

我觉得,也许“% ososid,%'因为ososid'XX' <-

我该如何解决?

我需要在一个操作系统中获得多少个游戏

戈登·利诺夫(Gordon Linoff)

你需要concat()like

SELECT osid, os_name,
       (SELECT count(*)
        FROM game_game
        WHERE concat(',', os, ',') LIKE CONCAT('%,', os.osid, ',%')
       ) as game_count
FROM game_os AS os
ORDER BY osid;

但是,您也可以使用编写此代码find_in_set(),因为您使用逗号作为分隔符:

SELECT osid, os_name,
       (SELECT count(*)
        FROM game_game
        WHERE find_in_set(os.osid, os) > 0
       ) as game_count
FROM game_os AS os
ORDER BY osid;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章