0

次の構造のMySQLテーブルがあります。

| uid     |   itemid
| -------------------
| 1001    |   9999
| 1001    |   8888
| 2002    |   8888
| ...     |   ...

uiditemidが一意の列ではありません。Bun uid+itemid はユニークな組み合わせです。

itemidで行を数える必要があります。次のクエリを使用します。

SELECT itemid, COUNT(*) 
FROM unlikes 
WHERE itemid IN ('9999', '8888') GROUP BY itemid;

そして、これはうまくいきます!

次に、具体的な uid を持つ行を知る必要があります。私が使う:

SELECT itemid, COUNT(*), IF (uid = '1001', TRUE, FALSE) toggled 
FROM unlikes 
WHERE itemid IN ('9999', '8888') GROUP BY itemid;'

うまくいかない。itemid = 8888 の行が複数ある場合、トグル = FALSE よりも。グループ内のいずれかが uid = 1001 の場合は、toggled = TRUE が必要です。

4

1 に答える 1

1
SELECT itemid, COUNT(*), 
CASE WHEN uid = 1001 THEN TRUE ELSE FALSE end AS toggled 
FROM unlikes 
WHERE itemid IN ('9999', '8888') GROUP BY itemid;
于 2012-09-08T14:12:09.320 に答える