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
我觉得,也许“% os
。osid
,%'因为os
。osid
在'XX' <-
我该如何解决?
我需要在一个操作系统中获得多少个游戏
你需要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] 删除。
我来说两句