我有这张数据表:
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
查询)?