2017-07-14 3 views
0

私はテーブルEVENT_COMMENTSとEVENT_COMMENTS_LIKESを持っています。だから、私は外部テーブル(外部キー(comment_idとuser_id)を持っています)とそのuser_idが自分のid私は出力したいと思う左側の結合を行う= true。MYSQLは残っています(もしidが他のテーブルにあれば1 else 0)

しかし、全く動作していません。私はすべてのIDのl.User_ID(私は好きなの数を数えます)のリストを取得することを意味しますが、自分のIDがそこにあるかどうかを確認することはできません。 はこの場合です私の idです。

SELECT c.Comment_ID,c.Event_ID,c.User_ID,count(l.User_ID) as amount_likes, 

(case l.User_ID when 54 THEN 'true' ELSE 'false' END) as is_liked 

FROM EVENT_COMMENTS c 
left join USERINFO u on u.USERID=c.User_ID 
left join EVENT_COMMENTS_LIKES l on l.Comment_ID = c.Comment_ID 
WHERE Event_ID=121514 
GROUP BY c.Comment_ID 
ORDER BY updated_time DESC 

大胆なものは難しいものです。

This is the error: Expression #10 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'markusp.l.User_ID' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

あなたの助けに感謝:)あなたのGROUP BYであなたの非集合列のすべてを含む

+3

この特定のケースのエラーメッセージは、すべてを示しています... – Shadow

+0

集計機能に関与していない列を選択していませんでした... – scaisEdge

+1

あなたの時間を無駄にして申し訳ありません。神はこれを1時間以上かけてくれました:/私はグループにl.User_IDを追加しました。 – Markus

答えて

0

てみてください。あなたの例では、次のようになります。c.Comment_ID、c.Event_ID、c.User_ID

+0

OPのmysqlバージョンは少しスマートで、comnent_idに機能的に依存しているグループcのテーブルcの他のフィールドをリストする必要はありません – Shadow

-1

Shadowが示すように、エラーメッセージには解決策が含まれています。 sql_mode

SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY','')); 

クエリを再実行してください。

+0

いいえ、しないでください。 – Shadow

0

すべてのユーザーが一度だけ、comnentが好きなことができる場合thenuse condtional (case l.User_ID when 54 THEN 'true' ELSE 'false' END) as is_liked表現の代わりにカウント:

sum(l.User_ID = 54) as is_liked 

l.User_ID = 54は、(1または0)などの真または偽と評価、コメントごとに加算されます。

集計関数sum()を使用しているため、質問に表示されるエラーメッセージは表示されません。

関連する問題