以下の値を返すSQL文があります。(select hotel_id, country_code from areas where area like '%地名%')
hotel_id | country_code |
---|---|
1 | PHL |
2 | PHL |
3 | PHL |
この結果を以下のテーブルに1行づつ検索をかけていきたいです。(hotelテーブルにもhotel_id,country_codeがある為、一致する行が欲しい)
EXISTSを使い以下の文を実行すると思い通りの値が返ってきます。この挙動について確認したいのですが、これは表示結果の1行が最初に選択され、
それをhotelテーブルの上から順番に問い合わせ、2が一致していれば取り出すというのを今回でいうと上記の3行全てで行なっているという感じですか。
SELECT * FROM hotels WHERE EXISTS (SELECT hotel_id, country_code from areas where area like '%地名%')
CREATE TABLE `hotels` ( `hotel_id` int(11) NOT NULL, `country_code` enum('JPN','PHL') DEFAULT NULL, `hotel_name` varchar(200) NOT NULL, `hotel_address` varchar(200) NOT NULL, `hotel_tel` varchar(100) NOT NULL, `price` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -- Dumping data for table `hotels` -- INSERT INTO `hotels` (`hotel_id`, `country_code`, `hotel_name`, `hotel_address`, `hotel_tel`, `price`) VALUES (1, 'PHL', 'クラウン リージェンシー ホテル & タワーズ (Crown Regency Hotel & Towers)', 'Osmeña Boulevard, セブ シティ, セブ, フィリピン', '63324389294', 20), (2, 'PHL', 'サローサ インターナショナル ホテル & レジデンシャル スイーツ (Sarrosa International Hotel and Residential Suites)', 'Kasambagan, Mabolo, Cebu City, Philippines, セブ シティ, セブ, フィリピン, 6000', '12345678912', 22), (3, 'PHL', 'マルコ ポーロ プラザ セブ ホテル (Marco Polo Plaza Cebu Hotel)', 'Cebu Veterans Drive, Nivel Hills, Apas, セブ シティ, セブ, フィリピン, 6000 - マップで立地をチェック', '12345678912', 30); -- -- Indexes for dumped tables -- -- -- Indexes for table `hotels` -- ALTER TABLE `hotels` ADD PRIMARY KEY (`hotel_id`); -- -- AUTO_INCREMENT for dumped tables -- -- -- AUTO_INCREMENT for table `hotels` -- ALTER TABLE `hotels` MODIFY `hotel_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/10 11:10
2019/02/10 12:08 編集
2019/02/10 12:08
2019/02/10 12:13
2019/02/10 12:56
2019/02/10 14:37