SQL新手,如何使用TableA上的SELECT调用结果对TableB进行SELECT?

时间:2010-09-30 20:26:30

标签: mysql join phpmyadmin

我正在使用phpMyAdmin来查询数据库。

我想选择TableA中Date ='2010-08-01'的所有条目。然后我想使用结果表中项目的SubID属性来查找TableB中具有匹配SubID的所有条目。我知道我必须在某个地方使用JOIN,但我不确定如何或在哪里。

我搜索了StackOverflow,似乎有很多类似的问题,但没有一个像我的基本(aka noob)。我无法弄清楚他们在谈论什么。为了让您了解我所知道的,我今天开始学习SQL,并阅读了关于SQL的W3 School教程。我觉得答案非常明显,我会因为没有把它弄清楚而自责。

非常感谢。

3 个答案:

答案 0 :(得分:2)

一个很好的参考是http://www.w3schools.com/sql

您需要的是:

SELECT *
FROM TableA a
JOIN TableB b on a.SubID = b.SubID
WHERE a.Date = '2010-08-01'

根据其他帖子进行编辑 - JOIN可能更有效,然而如果TableB中有多个记录具有相同的SubID,您将从TableA获得重复记录回。

答案 1 :(得分:1)

您实际上不需要JOIN - 只需要一个子查询来过滤TableB。像这样,例如:

SELECT SubID
FROM TableB
WHERE SubID IN
    (SELECT SubID
     FROM TableA
     WHERE Date='2010-08-01');

那就是说,根据@ ck的回答,你可以使用联接。

答案 2 :(得分:1)

如果您正在寻找加入,ck's post提供了一个简单的解决方案。

接近这个的另一种方法是使用子查询(在阅读你的问题标题时我想到了这一点):

SELECT * FROM TableB WHERE SubID IN
    (SELECT SubID FROM TableA WHERE Date = '2010-08-01')

外部SELECT查询(从TableB中选择)选择在SubID查询的结果集中找到SELECT s的行(从{{1中选择) }})。例如,如果TableA使用这些TableA s:

输出五行
  • 8
  • 11
  • 12
  • 27
  • 35

然后将从SubID TableBSubID的{​​{1}}中选择行。