1
                          テーブル
 __________________________ _________________________
|__________アイテム__________| |_______readStatus________|
|___itemId___|____データ____| |___itemId___|___status___|
| | 1 | 猫 | 猫 | | | 1 | 1 |
| | 2 | 犬 | 犬 | | | 2 | 1 |
| | 3 | 魚 | | | | | | |
 ------------------------- -------------------------

上記のような 2 つの MySQL テーブルがあります。テーブルに対応するエントリitemがないテーブルからエントリを取得する必要があります。したがって、この例では、エントリ where is が必要です。私はSQLにあまり詳しくないので、これについてどうやって取得するのか正確にはわかりませんが、他の質問に基づいてこれを思いつきました:status 1readStatusdatafish

SELECT * 
FROM items
INNER JOIN
readStatus
ON  items.itemId = readStatus.itemId
WHERE readStatus.status != 1

itemsただし、テーブル内に一致するエントリがないテーブル内のエントリをスキップするため、これは機能しませんreadStatusstatus 0最終的に何百万ものエントリが作成されるため、検索するエントリを追加することはできません。また、phpMyAdmin では、エントリを 1 つの出力にマージするように見えますが、これはあまり望ましくありませんが、問題を解決するものではありません。

どんな助けでも大歓迎です。

4

5 に答える 5

4

実際、これは (左の) 結合よりも EXIST で解決したほうがよいように思えます。

SELECT * 
FROM items
WHERE NOT EXISTS ( SELECT *
                  FROM readStatus
                  WHERE items.itemId = readStatus.itemId
                  AND readStatus.status = 1 )
于 2013-08-09T10:38:19.077 に答える
0

WHERE readStatus IS NULL OR readStatus.status != -1

于 2013-08-09T10:12:43.410 に答える