オブジェクトが複数の tid を持つことができると仮定します
ここで、次のクエリを実行するとします。
SELECT n.nid, t.tid, GROUP_CONCAT(t.tid)
FROM node n JOIN term_node t ON t.nid = n.nid
GROUP BY n.nid
HAVING t.tid = 31;
tid = 31 を持つテーブルノードのエントリをフェッチしたい...しかし、31 でなくても、その行に対応するすべての tid のリストも必要です (したがって、GROUP_CONCAT)。
WHERE t.tid = 31 を使用すると、GROUP 連結から 31 でない tid が除外され、HAVING t.tid = 31 を使用すると、GROUP 化された行に表示される tid 列が 31 でない行が除外されます。
どちらの方法でも、GROUP_CONCAT リストが不完全になるか、少なくとも 1 つの tid = 31 を持つノードの行が不完全になる可能性があります。
ノードに少なくとも 1 つの tid 関連付けが 31 に等しいすべてのノードを取得することが保証され、GROUP_CONCAT がそのノードに関連付けられている tid のリストをすべてリストするように、これを解決する方法はありますか?