2

下面的查询运行良好。现在我想添加另一个名为addresses的表,其中包含以下相同的submissionid变量zip。我想从地址where中提取所有submissionid变量,然后使用这些结果在下面的查询中从提交表中查找相应的行。zip = '$zip'title

$sqlStr = "SELECT title, points, submissionid
             FROM submission 
            WHERE zip = '$zip'
         ORDER BY points DESC, title ASC              
     LIMIT $offset, $rowsperpage";
4

1 回答 1

4

您可以使用子查询来实现这一点

$sqlStr = "SELECT title, points, submissionid
         FROM submission 
        WHERE submissionid IN(
              SELECT submissionid 
              FROM addreses
              WHERE zip = '$zip')
     ORDER BY points DESC, title ASC              
 LIMIT $offset, $rowsperpage";

参考:IN 子查询

或与 JOIN

$sqlStr = "SELECT s.title, s.points, s.submissionid
         FROM submission s 
         INNER JOIN addresses ad
         on ad.submissionid = s.submissionid
         WHERE ad.zip = '$zip'
     ORDER BY s.points DESC, s.title ASC              
 LIMIT $offset, $rowsperpage";

参考:加入

正如@AdrianCornish 在评论 INNER join 中提到的那样,它比子查询快。因此,您最好使用 JOIN 选择第二个选项。

SO Subqueries vs joins上的相关线程

于 2012-06-02T07:12:03.473 回答