考虑以下查询
select * from games
where game_id in
(
SELECT TRIM(LEADING ',' FROM
(
SELECT games FROM `users_games` WHERE `email`=1656366
))
)
第一个内部查询
SELECT TRIM(LEADING ',' FROM
(
SELECT games FROM `users_games` WHERE `email`=1656366
))`
返回7497251,7497252,7497255,7497321,7497326,7497339,7497340,7497364,8178978
但总查询仅返回 game_id = 7497251
行的数据。为什么会这样呢?如果我直接将内部 TRIM 查询的结果提供给外部查询,我会得到所需的结果。谁能解释一下为什么吗?
最佳答案
FIND_IN_SET()应该可以。
select * from games
where find_in_set(game_id,
(
SELECT TRIM(LEADING ',' FROM
(
SELECT games FROM `users_games` WHERE `email`=1656366
))
)) > 0
但正如@fancyPants所说:
切勿在一列中存储多个值!
关于mysql - TRIM mysql 值在外部查询中不解释为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20375146/