3

次のような 2 つのデータベース テーブルがあります。

Knowledge
id          |        Title
--------------------------
3                     Hi
6                     Hello
7                     Yo
5                     Jump


Sorting
id          +        kID       
--------------------------
0           |         3
1           |         6
2           |         7
3           |         6
4           |         7
5           |         5

SortingkID が 1 回出現するテーブルから行のみを選択しようとしていますが、これが私が試したものです。

SELECT Knowledge.*, Sorting.*
FROM Knowledge, Sorting 
WHERE Knowledge.id = Sorting.KID
GROUP BY Sorting.KID 
    HAVING COUNT(Sorting.KID)<2
ORDER BY Sorting.SortOrder
LIMIT 0,8

何らかの理由で、ただではなくすべてを返しますがHiJumpこれは私が達成しようとしていたことです。

4

2 に答える 2

1

サブクエリを使用して結果を取得することをお勧めします。

select k.id, k.title
from knowledge k
inner join
(
  select kID
  from sorting
  group by kID
  having count(kID) < 2
) s
  on k.id = s.kid
LIMIT 0,8;

SQL Fiddle with Demoを参照してください。

サブクエリは、テーブルに単一のカウントを持つ行のみを返し、sortingこの結果を使用してテーブルに結合できknowledgeます。

于 2013-03-05T03:11:11.410 に答える
-1
SELECT Knowledge.*, Sorting.*
FROM Knowledge, Sorting 
WHERE Knowledge.id = Sorting.KID
group by kID
having count(id) < 2

問題は、間違ったフィールドで count() を実行していたことです

于 2013-03-05T01:14:11.877 に答える