find_in_set - 请教 mysql查询
ringa_lee
ringa_lee 2017-04-17 14:57:45
0
8
793

mysql 表中字段option_tag 存储的值格式(分号)为: 4:539;8:543;4:545;8:549
通过 find_in_set() 可以查找到以逗号分隔的字符串。
以分号分隔的 字符串 有什么函数直接能查询到 option 含有 539的所有值?

ringa_lee
ringa_lee

ringa_lee

全員に返信(8)
洪涛

SQL ステートメント:
SELECT * FROM table
WHERElocate(':539;', CONCAT(options_tag, ';')) > 0

like を使用するロジックは厳密ではありません。たとえば、4:2539 も like と一致しますが、これは望ましい結果ではありません。

設計の観点から、複雑なデータ型の場合は、json 形式で保存することをお勧めします。mysql の上位バージョンには、json 解析関数とクエリ関数が直接組み込まれています。

いいねを押す +0
巴扎黑

「いいね!」または「通常のルール」を使用してください。
ただし、mysql にロジックを組み込むことはお勧めできません。データベース エンジンに過剰な負荷がかかり、非常に安全ではありません。
正しいアプローチは、フィールド全体の値を取り出し、それを文字列として使用し、それを処理するために php、python、nodejs などの言語を使用することです。

いいねを押す +0
洪涛

リーリー

@小蔹哥が言ったように、これは 1 対多または多対多の関係のようです。クエリ効率が低いだけではありません。 (フィールドは SQL で処理されます。この操作により、このフィールドのインデックスが使用できなくなる可能性があります)、クエリは柔軟性がありません。

いいねを押す +0
阿神

いいねマッチ

いいねを押す +0
Ty80

いいね:539

いいねを押す +0
洪涛

これは設計上の欠陥だと思いますが、同意する人はいますか?

いいねを押す +0
Ty80

似たようなマッチング

いいねを押す +0
PHPzhong

ぼやけた
クエリ
リサーチ

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート