Mysql SQL新手,如何使用对TableA的SELECT调用的结果来针对TableB进行选择?
我正在使用phpMyAdmin查询数据库 我想选择表A中日期为2010-08-01的所有条目。然后我想使用结果表中项目的SubID属性来查找表B中所有具有匹配SubID的条目。我知道我必须在某处使用连接,但我不确定如何或在何处使用连接 我搜索了StackOverflow,似乎有很多类似的问题,但没有一个像我这样的基本问题。我真的搞不懂他们在说什么。为了让您了解我所知道的,我今天开始学习SQL,并通读了W3学校关于SQL的教程。我觉得答案会非常明显,我会为自己没有弄明白而自责 非常感谢。一个好的参考是 您需要的是:Mysql SQL新手,如何使用对TableA的SELECT调用的结果来针对TableB进行选择?,mysql,join,phpmyadmin,Mysql,Join,Phpmyadmin,我正在使用phpMyAdmin查询数据库 我想选择表A中日期为2010-08-01的所有条目。然后我想使用结果表中项目的SubID属性来查找表B中所有具有匹配SubID的条目。我知道我必须在某处使用连接,但我不确定如何或在何处使用连接 我搜索了StackOverflow,似乎有很多类似的问题,但没有一个像我这样的基本问题。我真的搞不懂他们在说什么。为了让您了解我所知道的,我今天开始学习SQL,并通读了W3学校关于SQL的教程。我觉得答案会非常明显,我会为自己没有弄明白而自责 非常感谢。一个好的参
SELECT *
FROM TableA a
JOIN TableB b on a.SubID = b.SubID
WHERE a.Date = '2010-08-01'
按照其他帖子编辑-连接可能更有效,但是如果您在TableB中有多条记录具有相同的
SubID
,您将从返回的TableA中获得重复记录 一个好的参考是
您需要的是:
SELECT *
FROM TableA a
JOIN TableB b on a.SubID = b.SubID
WHERE a.Date = '2010-08-01'
按照其他帖子编辑-连接可能更有效,但是如果您在TableB中有多条记录具有相同的
SubID
,您将从返回的TableA中获得重复记录 实际上,您不需要连接,只需要一个子查询来过滤TableB。比如说:
SELECT SubID
FROM TableB
WHERE SubID IN
(SELECT SubID
FROM TableA
WHERE Date='2010-08-01');
也就是说,根据@ck的回答,您可以使用联接。实际上您不需要联接,只需要一个子查询来过滤TableB。比如说:
SELECT SubID
FROM TableB
WHERE SubID IN
(SELECT SubID
FROM TableA
WHERE Date='2010-08-01');
也就是说,根据@ck的回答,您可以使用连接。如果您正在寻找连接,则提供了一个简单的解决方案 另一种方法是使用子查询(在阅读您的问题标题时,我想到了这一点): 外部
SELECT
查询(从TableB
中选择)选择在内部SELECT
查询(从TableA
中选择)的结果集中找到其SubID
的行。因此,例如,如果TableA
出现五行,其中包含SubID
s:
- 八,
- 十一,
- 十二,
- 二十七
- 三十五
然后将从
TableB
中选择行,其SubID
s在(8、11、12、27、35)中,如果您正在寻找联接,则提供了一个简单的解决方案
另一种方法是使用子查询(在阅读您的问题标题时,我想到了这一点):
外部SELECT
查询(从TableB
中选择)选择在内部SELECT
查询(从TableA
中选择)的结果集中找到其SubID
的行。因此,例如,如果TableA
出现五行,其中包含SubID
s:
- 八,
- 十一,
- 十二,
- 二十七
- 三十五
然后从TableB
中选择行,其SubID
s在(8、11、12、27、35)
中是