mysqlサブクエリについて

WBOY
WBOYオリジナル
2016-06-23 14:24:38893ブラウズ

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


私が言いたいのは、 SELECT `sid` FROM `x_search` WHERE `id` =6 の結果は 1 や 2 ではなく (1,2) です

他に必要がない場合は、単に 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」の結果は

あることだけを示しています。 1レコードでsidの値が返されるのですが、「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" です

返されるレコードが 1 つあり、sid の値が "1,2" であることを示しているだけですよね?

その場合は、次のように記述できます
SELECT * FROM `x_shop` WHERE find_in_set(`id`,(SELECT `sid` FROM `x_search` WHERE `id`=6))

モデレータ V587

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。