PHP / SQL语句重复查询

时间:2012-02-14 04:13:25

标签: php mysql select

如果我有一份我从声明中选择的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中,执行此操作的最佳方法是什么?

3 个答案:

答案 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)