如果我有从声明中选择的ID列表

SELECT id FROM myTable WHERE name = 'TEST'


这将仅返回ID(1001、1002、1003等)。然后,我想执行另一个SELECT语句来检索所有这些ID的所有标题。

SELECT title FROM myTable2 WHERE id = XXXX


table2中的id是table2的外键。 myTable中的id是主键。我该如何从这些ID中检索所有标题。我当时正在考虑将第一个select语句的所有结果存储在一个数组中,然后使用while循环遍历列表并将每个结果返回到另一个数组中,但是我担心的是,如果数据库必须变大,当它变大时,返回1000行,这可能是一些不好的开销。那么在PHP或SQL中执行此操作的最佳方法是什么?

最佳答案

您可以使用子查询:

SELECT title
FROM myTable2
WHERE id IN (
 SELECT id
  FROM myTable
  WHERE name = 'TEST'
)


另一种方法是使用JOIN以避免子查询:

SELECT title
FROM myTable2
LEFT JOIN myTable
 ON myTable.id = myTable2.id
WHERE myTable.name = 'TEST'

10-04 22:08
查看更多