2017-03-29 4 views
0

最初のクエリをメインクエリに入れ、変数のセットを避ける方法はありますか?MySQLクエリは変数の使用を避ける

SET @domain_id = (SELECT id FROM stop_domain LIMIT 1); 
SELECT 
    IFNULL(MAX(duid), 0) + 1 AS duid 
    , @domain_id 
FROM 
    stop_link 
WHERE domain_id = @domain_id; 

stop_domain

id | url 

stop_link実際そこ

id | duid | domain_id 

答えて

0

あり、

SELECT 
    IFNULL(MAX(duid), 0) + 1 AS duid 
    , domain_id 
FROM 
    stop_link 
WHERE domain_id = (SELECT id FROM stop_domain LIMIT 1); 
+0

OUP BY、SELECTリストの式#2に非集約列 'stop_link.domain_id'が含まれています。これはsql_mode = only_full_group_by – nenad007

1
これはGRなし集約クエリで示す
SELECT  IFNULL(MAX(duid), 0) + 1 AS duid 
      ,t.id 
FROM  (SELECT id FROM stop_domain LIMIT 1) t 
INNER JOIN stop_link 
ON   domain_id = t.id 
GROUP BY t.id; 
+0

と互換性がありません。GROUP BYのない集計クエリでは、SELECTリストの式#2に集計されていない列 't.id'が含まれています。これはsql_mode = only_full_group_byと互換性がありません – nenad007

+0

はい、あなたは右のグループ化が必要です – McNets

関連する問題