【问题标题】:MySQL join two tables where WHERE statement from PHP variable already existsMySQL 连接两个表,其中 PHP 变量中的 WHERE 语句已经存在
【发布时间】:2012-11-17 11:25:46
【问题描述】:

我通常会这样进行连接:

$query = "SELECT table1.ColA, table2.ColC ".
     "FROM table1, table2".
        "WHERE table1.uid = table2.uid";

但在这种情况下,WHERE 部分已经用于使用 PHP 变量指定记录。在这种情况下如何加入表 2?

SELECT SQL_CALC_FOUND_ROWS ColA, ColB FROM Table1 WHERE value = $value

【问题讨论】:

  • 如果我正确理解了您的问题,$sql = 'select * from table1, table2 where table1.uid = table2.uid and value = \''.$value.'\''; 应该可以工作。
  • 另见this question。使用JOIN 子句指定连接条件通常更具可读性。

标签: php mysql sql join


【解决方案1】:

试试这个 ::

SELECT 
SQL_CALC_FOUND_ROWS ColA, 
ColB 

FROM table1, table2
WHERE value = $value 
and table1.uid = table2.uid

或者你可以加入表格

SELECT 
SQL_CALC_FOUND_ROWS ColA, 
ColB 

FROM table1 INNER JOIN table2 on table1.uid = table2.uid
WHERE value = $value 

【讨论】:

    【解决方案2】:

    他们已经加入了。是一样的

    SELECT table1.ColA, table2.ColC 
    FROM table1
    INNER JOIN table2 ON  table1.uid = table2.uid
    

    如果您需要添加更多条件,请将它们添加到WHERE 子句中:

    SELECT table1.ColA, table2.ColC
    FROM table1, table2
    WHERE table1.uid = table2.uid
      AND value = $value;
    

    或者,使用 ANSI SQL-92 语法:

    SELECT table1.ColA, table2.ColC 
    FROM table1
    INNER JOIN table2 ON  table1.uid = table2.uid
    WHERE  value = $value;
    

    注意:您应该始终使用后面的语法,使用JOIN 来加入WHERE 子句的表。这是执行此操作的推荐方法。请参阅this post 了解更多信息。

    【讨论】:

      【解决方案3】:

      请试试这个

      $query = "SELECT table1.ColA, table2.ColC FROM table1, 
                  table2 WHERE table1.uid = table2.uid and table1.value=$value";
      

      $query = "SELECT table1.ColA, table2.ColC FROM table1 INNER JOIN table2 
                     ON (table1.uid = table2.uid) WHERE table1.value=$value";
      

      【讨论】:

      • 嗯,你错过了非常重要的价值转义。 :)
      • 这里使用 ():ON (table1.uid = table2.uid) 是我完成这项工作所必需的。谢谢!
      猜你喜欢
      • 2017-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 2016-03-31
      相关资源
      最近更新 更多