Mysql SQL新手,如何使用对TableA的SELECT调用的结果来针对TableB进行选择?

Mysql SQL新手,如何使用对TableA的SELECT调用的结果来针对TableB进行选择?,mysql,join,phpmyadmin,Mysql,Join,Phpmyadmin,我正在使用phpMyAdmin查询数据库 我想选择表A中日期为2010-08-01的所有条目。然后我想使用结果表中项目的SubID属性来查找表B中所有具有匹配SubID的条目。我知道我必须在某处使用连接,但我不确定如何或在何处使用连接 我搜索了StackOverflow,似乎有很多类似的问题,但没有一个像我这样的基本问题。我真的搞不懂他们在说什么。为了让您了解我所知道的,我今天开始学习SQL,并通读了W3学校关于SQL的教程。我觉得答案会非常明显,我会为自己没有弄明白而自责 非常感谢。一个好的参

我正在使用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)
中是