私はデータを含むこのテーブルを持っています:
NAME | GROUP
------------
a1 | A
a22 | A
c1 | C
c2 | C
s1 | NULL
t1 | NULL
名前の付いたレコードを選択する方法a1
と、このレコードgroup <> NULL
に同じグループの他のアイテムも含まれている場合はどうすればよいですか?
サブクエリを試しました:
SELECT `name`, `group` FROM `tbl`
WHERE (`name` = 'a1' AND `group` IS NULL) OR `group` = (SELECT `group` FROM `tbl` WHERE `name` = 'a1')
EXPLAIN
:
id select_type table type possible_keys key key_len ref rows
1 PRIMARY tbl ALL PRIMARY NULL NULL NULL 6 Using where
2 SUBQUERY tbl const PRIMARY PRIMARY 386 const 1
これは機能しますが、100%正確で効率的かどうかはわかりません。より良い解決策を探していJOIN
ますか?
MySQL内部の質問:SELECT
外部テーブルで検索されたすべてのレコードに対して内部クエリが実行されますか?このクエリの結果は(クエリのように)キャッシュされSELECT SQL_CACHE
ますか?