0

わかりました、ここstatesにあるテーブルを使用しています

...ANDdefault_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''');

州の略語のリストを含むテーブルにフィールドがあり、フィールドは「州」であるため、例としてこれらのフィールドの1つを選択すると:

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 を返します。

私が間違っていることについてのヒントを探していましたが、トリックが見つからないようです。誰にも解決策がありますか?

4

2 に答える 2

1

これを試して

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

'636'

あなたはここで生きて尋ねることができます

http://sqlfiddle.com/#!2/7bd88/4

テーブル default_item はどこにありますか

于 2012-09-14T21:06:27.770 に答える
1

最初のクエリは、2 つの文字列のリストではなく、文字列 "AR, CA" を返します。サブクエリを置き換えるときの複合クエリは、実際には次のようになります。

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

それがうまくいかない理由です。

于 2012-09-14T21:06:29.380 に答える