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


Single quotes in MySQL query not work for 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

我觉得也许'%,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;