0

mysql クエリの group_concat に問題があります。

513番で止まります!

これは通常のクエリで、813 行を返します。

SELECT * 
FROM survey_votes
WHERE sid =  '4'

そして今、問題はこのクエリにあります:

SELECT s.*,     
    GROUP_CONCAT(v.oid) AS myoids
    FROM survey s
    LEFT JOIN survey_votes v ON s.sid=v.sid
    WHERE s.sid='4'

これは、最大 513 文字列の配列「myoids」を含む 1 行を返します。

テーブル「調査」の構造体:

sid  int(11)          
stitle   varchar(255)
sdesc    text     
soptions text    
sdate    datetime  
active   int(1)

調査票:

vid int(11) 
sid int(11)     
uid int(11)     
uip varchar(255)    
oid int(11)     
sdate   datetime

myoidsには最大 513 行のみが含まれます。

Array
(
    [0] => 1
    [1] => 1
    [2] => 3
    .........
    [511] => 1
    [512] => 
)
4

3 に答える 3

1

これは、MySQL がGROUP_CONCAT特定の制限を超えると結果を切り捨てるためです。

結果は、group_concat_max_len システム変数 (デフォルト値は 1024) によって指定される最大長に切り捨てられます。

次のコマンドgroup_concat_max_lenを使用して、変数の値を増やしてみてください。SET

SET SESSION group_concat_max_len = 1024 * 1024; -- 1MB
于 2013-02-05T07:43:00.260 に答える
0

これが返す行数:

SELECT * 
FROM survey
WHERE sid =  '4'

これは 513 行を返しますか?

于 2013-02-05T07:42:08.037 に答える
0

クエリは

SELECT s.*,     
GROUP_CONCAT(v.oid) AS myoids
FROM survey s
LEFT JOIN survey_votes v ON s.sid=v.sid
WHERE v.sid='4'
      // here was the problem it should be v.sid not s.sid

survey_votes最初のクエリでは、どこから選択しているのでsid = '4'

SELECT * 
FROM survey_votes
WHERE sid =  '4'
于 2013-02-05T07:28:29.670 に答える