ショットuser_table、このような構造:MySQLは、私は2つのテーブルを持って、最初のはbrand_tableそれを呼ばせ、このような構造
<table>
<tr>
<th>user_id</th>
<th>username</th>
<th>favorite_brands</th>
</tr>
<tr>
<td>1</td>
<td>John Wick</td>
<td>1,2</td>
</tr>
<tr>
<td>2</td>
<td>Jack Reaper</td>
<td>2</td>
</tr>
<tr>
<td>2</td>
<td>Han Solo</td>
<td>1</td>
</tr>
</table>
おそらく、私がすることによって、特定のブランドを好きどのくらいのユーザーが知ることができます。私はブランドのそれぞれが好きな総ユーザーを知りたい場合は、今すぐ
select count(*)
from table_user
where favorite_brands like
(
SELECT concat('%', brand_id, '%')
from brand_table
where brand_id = <brand_id>
)
を、私はそれを行う必要がありますでも2つのフェーズとプログラミング側でそれを行う:
- まず、結果にすべてのブランドや店舗、それらをロードするには、
- 第二セット、結果セットに反復処理し、それぞれの総ユーザーを見つける をbrand_id
私がやりたいことは、これを1つのクエリで実行することです。
誰でも教えてください。
なぜ、テーブルに 'user_id 1'の2レコードの代わりに' favourite_brands'を '1,2'として、ユーザがお気に入りとして好きなブランドごとに1つの' user_id 1'レコードがありますか? – Nope
ヒント: 'LIKE'の代わりに' FIND_IN_SET() 'を使用してください。 – sagi
あなたは ''を持っているので、 'SELECT'を使わないでください!とにかく、あなたが '' LIKE '%1%' 'で終わると何が起きますか? - 間違った結果です。 –