从多个MySQL表中获取数据

时间:2010-04-13 05:53:27

标签: php mysql join

我的两张桌子看起来像这样:

       TABLE1                      TABLE2
+--------------------+      +--------------------+
|field1|field2|field3|  and |field2|field4|field5|
+--------------------+      +--------------------+

我已经在为TABLE1运行SELECT查询,并将所有数据分配到变量中:

$query = "SELECT * FROM TABLE1 WHERE field2 = 2";
$result = mysql_query($query);
$num_rows = mysql_num_rows($result);    
  if((!is_bool($result) || $result) && $num_rows) {
   while($row = mysql_fetch_array($result))
    {
   $field1 = $row['field1'];
   $field2 = $row['field2'];
   $field3 = $row['field3'];
    }
  }

我想要做的是从TABLE2上的'field4'获取数据并将其添加到我的变量中。我想得到field4 WHERE field2 = 2

4 个答案:

答案 0 :(得分:3)

SELECT
  t1.*,
  t2.field4
FROM
  TABLE1 AS t1,
  TABLE2 AS t2
WHERE 
    t1.field2 = 2
  AND
    t1.field2 = t2.field2

您希望加入两个表,可以显式地(使用JOIN运算符或其中一个变体)隐式地(通过SELECT直接从多个表中完成)。

根据您的描述,我想您要进行联接,其中两个表中的field2具有相同的值(2)。


如果 TABLE2并不总是提供有效的加入候选者,但仍需要TABLE1的数据,则应使用LEFT JOINNULL 1}}对于field4,其中没有任何内容匹配):

SELECT
  t1.*,
  t2.field4
FROM
    TABLE1 AS t1
  LEFT JOIN
    TABLE2 AS t2
  ON
    t1.field2 = t2.field2
WHERE 
  t1.field2 = 2

答案 1 :(得分:1)

答案 2 :(得分:1)

您需要使用JOIN

SELECT TABLE1.*,TABLE2.field4 FROM TABLE1 JOIN TABLE2 ON TABLE1.field2=TABLE2.field2 WHERE TABLE1.field2=2;

答案 3 :(得分:0)

您可以尝试以下作为您的查询。

在选择查询

中始终不首选使用*
SELECT T1.field1,T1.field2,T1.field3, T2.field4 FROM TABLE1 AS T1 INNER JOIN TABLE2 AS T2 ON T1.field2=T2.field2 WHERE field2 = 2