1

今はスロープワンをオススメで使っています。

訪問したアイテムを結果から除外する方法は?

not in (visited_id_list)古いユーザーのスケーラビリティの問題があるため、訪問したものをフィルタリングするだけではできません!

なしで解決策を思いつきましたnot in:</p>

select b.property,count(b.id) total from propertyviews a
                                         left join propertyviews b on b.cookie=a.cookie
                                         left join propertyviews c on c.cookie=0 and b.property=c.property
                                         where a.property=1 and a.cookie!=0 and c.property is null
                                         group by b.property order by total;
4

1 に答える 1

1

真剣に、MySQLを使用している場合は、12.2.10.3を参照してください。ANY、IN、およびSOMEを使用したサブクエリ

例えば:

SELECT s1 FROM t1 WHERE s1 IN    (SELECT s1 FROM t2);

これは、私が調べたMySQLのすべてのバージョンで使用できますが、マニュアルのセクション番号は以前のバージョンでは異なります。

OPのコメントに応じて編集します。

  1. OK...のようなものはどうですかSELECT id FROM t1 WHERE ... AND NOT id IN (SELECT seen_id FROM user_seen_ids where user = ? )。この形式により、SQLステートメントで数千のIDを渡す必要がなくなります。

  2. クエリの「IDのリストに対するテスト」の部分を完全に避けたい場合は、それをどのように実装するかは言うまでもなく、理論的にはどのように可能であるかさえわかりません。

于 2010-01-18T14:06:16.637 に答える