如果我有从声明中选择的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'