mysql - 子查询不起作用,但替换子查询结果可以

标签 mysql subquery

好的,我正在使用找到的 stateshere

...并且定义了一个表default_item:

CREATE TABLE IF NOT EXISTS `default_item` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `States` varchar(200) NOT NULL DEFAULT '""'
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=637 ;

INSERT INTO `default_Item` (`id` `States`) VALUES
(636, '''AR'',''CA''');

我的表中有一个字段,其中包含州缩写列表,该字段是“States”,因此如果我选择其中一个字段作为示例:

SELECT `States`
FROM `default_item` 
WHERE `id`=636

这通过 PHPMyAdmin 返回:

'AR','CA'

我希望能够将州缩写替换为上面引用的“州”表中的州名称。如果我使用:

SELECT group_concat( `state` )
FROM `state`
WHERE `state_abbr`
IN (
'AR', 'CA'
)

它有效!我得到:

Arkansas,California

但是如果我使用子查询...

SELECT group_concat( `state` )
FROM `state`
WHERE `state_abbr`
IN (
SELECT `States`
FROM `default_item` 
WHERE `id`=636
)

...这将返回 NULL。

一直在寻找一些关于我做错了什么的提示,但似乎找不到窍门。大家有解决办法吗?

最佳答案

您的第一个查询返回一个字符串“AR,CA”,而不是两个字符串的列表。替换子查询时的复合查询实际上如下所示:

SELECT group_concat( `state` )
FROM `state`
WHERE `state_abbr`
IN (
  "AR, CA"
)

这就是它不起作用的原因。

关于mysql - 子查询不起作用,但替换子查询结果可以,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12431917/

相关文章:

mysql - 案例 MySQL - 选择作为值

mysql - 单表子查询

mysql - 如何在 MySQL 中按地区对美国各州进行分组?

mysql - 如果将 INT 列更改为 MEDIUMINT,我将节省多少大小?

mysql - 如何使用其他三个表中列的平均值更新一个表中的分数列?

mysql - 哪个是更快的 View 或子查询?

mysql - 在 MySQL 中选择多个值作为数组

java - 持久性单元的多次登录?

MySQL - 按组排除最近一个月

mysql - QueryDSL 和 Hibernate 未声明路径 'provider'/SQL 语法错误