ホームページ >バックエンド開発 >PHPチュートリアル >mysqlサブクエリについて
SELECT * FROM `x_shop` WHERE `id` IN(SELECT `sid` FROM `x_search` WHERE `id`=6)
SELECT `sid` FROM `x_search` WHERE `id`=6の結果は1、 2
最初の SQL 文で SELECT * FROM `x_shop` WHERE `id` IN(1,2) の効果を実現する方法
応用シナリオ: 販売者に対して複数のキーワード (検索) を設定します。次の 2 つです。どちらが良いでしょうか?
1. テーブルフィールドを作成します: id、key、sid sid は記録された販売者 ID です
2. ショップテーブルにキーフィールドを追加し、全文インデックスを設定します
2 つの質問、助けてください
SELECT a.* FROM `x_shop` AS a, `x_search` AS b WHERE a.id = b.sid AND b.id=6
他に必要がない場合は、2 を使用してください。SQL ステートメントは引き続きこのように使用できることがわかります クール
SELECT a.* FROM `x_shop` AS a, `x_search` AS b WHERE a.id = b.sid AND b.id=6
他に必要がない場合は、単に 2 を使用してください。まだこのように使用できます
全文インデックスのパフォーマンスが低いですか?
メイン投稿の SQL が良くありませんか?
メイン投稿の SQL が機能していませんか?
実行できますが、結果が (1,2) の場合、クエリ 1 だけが実際には実行できません
in(1,2) は 1 と 2 をクエリできます。 1 と 2 をクエリできます。出てきます
SELECT * FROM `x_shop` WHERE `id` IN(1,2) 2 つの項目をクエリできます
SELECT * FROM `x_shop` WHERE `id` IN(SELECT `sid` FROM `x_search` WHERE `id` =6) いいえ、1 つしか見つかりません
「SELECT `sid` FROM `x_search` WHERE `id`=6 は 1,2」の結果は
その場合は、次のように記述できます
SELECT * FROM `x_shop` WHERE find_in_set(`id`,(SELECT `sid` FROM `x_search` WHERE `id`=6))
あなたの「SELECT `sid` FROM `x_search` WHERE `id`=6 の結果は 1,2" です
その場合は、次のように記述できます
SELECT * FROM `x_shop` WHERE find_in_set(`id`,(SELECT `sid` FROM `x_search` WHERE `id`=6))
モデレータ V587