MySql-子查询工作不正常

MySql-子查询工作不正常,mysql,subquery,mysql-dependent-subquery,Mysql,Subquery,Mysql Dependent Subquery,如果查询正确,则BubQuery始终返回空结果 第一次查询: SELECT * FROM `user` WHERE user_age IN(1,22,34); SELECT GROUP_CONCAT(user_age_list) AS user_age FROM `user_detail` WHERE id='1'; SELECT * FROM `user` WHERE user_age IN(SELECT GROUP_CONCAT(user_age_list) AS user_age FR

如果查询正确,则BubQuery始终返回空结果

第一次查询:

SELECT * FROM `user` WHERE user_age IN(1,22,34);
SELECT GROUP_CONCAT(user_age_list) AS user_age FROM `user_detail` WHERE id='1';
SELECT * FROM `user` WHERE user_age IN(SELECT GROUP_CONCAT(user_age_list) AS user_age FROM `user_detail` WHERE id='1');
结果:

SELECT * FROM `user` WHERE user_age IN(1,22,34);
SELECT GROUP_CONCAT(user_age_list) AS user_age FROM `user_detail` WHERE id='1';
SELECT * FROM `user` WHERE user_age IN(SELECT GROUP_CONCAT(user_age_list) AS user_age FROM `user_detail` WHERE id='1');

第二次查询:

SELECT * FROM `user` WHERE user_age IN(1,22,34);
SELECT GROUP_CONCAT(user_age_list) AS user_age FROM `user_detail` WHERE id='1';
SELECT * FROM `user` WHERE user_age IN(SELECT GROUP_CONCAT(user_age_list) AS user_age FROM `user_detail` WHERE id='1');
结果:

我正在尝试:

SELECT * FROM `user` WHERE user_age IN(1,22,34);
SELECT GROUP_CONCAT(user_age_list) AS user_age FROM `user_detail` WHERE id='1';
SELECT * FROM `user` WHERE user_age IN(SELECT GROUP_CONCAT(user_age_list) AS user_age FROM `user_detail` WHERE id='1');
Sqlfiddle://这是一个示例表

上面的查询总是返回空行。 但是,如果每个查询单独运行,则返回结果。 真的,我不知道哪里出错了。 请更新答案或建议我

SELECT * 
FROM user
WHERE user_age IN 
(SELECT user_age_list user_age 
 FROM user_detail
 WHERE id='1');
在这里你不需要小组讨论。引擎知道结果集是一个包含列表,没有concat组

它试图做的是将“1,22,34”与每个用户年龄进行比较,这就是为什么没有结果

1 <> '1,22,34'
22 <> '1,22,34'
34 <> '1,22,34' 
1'1,22,34'
22  '1,22,34'
34  '1,22,34' 

因此没有结果。

避免使用GROUP_CONCAT

1 <> '1,22,34'
22 <> '1,22,34'
34 <> '1,22,34' 
SELECT * 
FROM `user` 
WHERE user_age IN(SELECT user_age_list FROM `user_detail` WHERE id='1');
已更新

SELECT * 
FROM `user` u 
WHERE EXISTS (SELECT 1 FROM `user_detail` ud  WHERE id='1' AND ud.user_age_list = u.user_age)

参见规范化。规范化您的模式。如果问题仍然存在,请参阅摆脱组concat。只需选择UsSeriaGeList表单用户用户名。请使用SqLoDeld:返回空行。它考虑单个引号中的单个值。如果“代码”>从USER细节中选择“*”,在(1,22,34)< /代码>中,用户选择了什么?在我看来,问题可能在于该表中数据的结构……我得到了以下结果:
1,22,34
然后
where ID='1'
的where子句导致子查询不返回任何记录。为什么在用户年龄列表中需要ID=1?此时,我需要将此行为视为SQLFiddle.com。我不明白为什么这个或@JayDipJ的解决方案不起作用。返回空结果。
user\u age\u list
列中存在什么样的数据?子查询将返回“12234”,而不将GROUP\u CONCAT“12234”作为单个值,或者在单独的行中返回每个年龄。您的子查询将返回此值<代码>用户年龄列表作为单独的行。