1

これを正しく説明できることを願っています。ここにあります:

現在の ID の数を確認するために、サブスクリプション ステータスに対して mysql テーブルをチェックインする必要がある ID のリストがあります。私はIDとsubscriptionEndを持っています。クエリが機能せず、これがどのように行われるかを知るのに十分な知識がありません。私ができることを確認して共有してください。照合する必要がある ID は何千もあります。

SELECT c.id, c.subscriptionEnd
FROM subscriptions c
WHERE c.subscriptionEnd > '2013-01-27`
AND c.id = 12345
AND c.id = 12939
....

このリストは延々と続きますが、うまくいかないことがわかります。しかし、問題は、これを機能させる方法がわからないことです。指定された日付よりも大きな subscriptionEnd を持つ ID の結果を確認して取得する方法についての解決策に非常に感謝しています。

ありがとうございました

4

1 に答える 1

1

何千もの値を確認する必要があるため、確認するすべての ID を一時テーブルに挿入するのが最善の策です。checkIds単一の列でテーブルを呼び出しましょうid

次に、次のように簡単に実行できます。

SELECT c.id, c.subscriptionEnd
FROM subscriptions c
INNER JOIN checkIds ON c.id = checkIds.id
WHERE c.subscriptionEnd > '2013-01-27'

完了したら、最後に一時テーブルを削除します。


その他のソリューションは次のとおりです。

  • おそらくパフォーマンスの悪夢となる巨大で扱いにくいIN節:

    SELECT c.id, c.subscriptionEnd
    FROM subscriptions c
    WHERE c.subscriptionEnd > '2013-01-27'
    AND c.id IN (12345, 12939, ...)
    
  • ID のリストでパターンを見つける:

    SELECT c.id, c.subscriptionEnd
    FROM subscriptions c
    WHERE c.subscriptionEnd > '2013-01-27'
    AND (c.id = 12345
        OR c.id BETWEEN 12939 AND 12951
        OR ...)
    
于 2013-01-28T18:55:26.167 に答える