如果我有一份我从声明中选择的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中,执行此操作的最佳方法是什么?
答案 0 :(得分:4)
您可以使用子查询:
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'
答案 1 :(得分:1)
您应该能够同时选择它们。
SELECT a.id, b.title
FROM myTable a, myTable2 b
WHERE a.name = 'TEST' AND b.id = a.id;
答案 2 :(得分:-1)
选择两者:
SELECT id, title FROM mytable WHERE name="TEST"
或选择整行
SELECT * FROM mytable WHERE name="TEST"
如果您选择的是两个表:
SELECT id, title FROM mytable A JOIN mytable2 B USING (id)