【问题标题】:MYSQL - SELECT from different databasesMYSQL - 从不同的数据库中选择
【发布时间】:2013-08-27 23:08:24
【问题描述】:

如何将同一查询中的数据从两个不同的数据库中选择到同一台服务器中? 这就是我正在做的事情,但我的查询不起作用:

$sqlquery = "SELECT * FROM database_2.table_2 WHERE database_1.table_1.data_1 LIKE database_2.table_2.data_2";

$result = mysql_query($sqlquery);
$number = mysql_numrows($result);

$i = 0;
if ($number < 1) {
  print "DOH";

}else{
  while ($number > $i) {
    $content = mysql_result($result,$i,"database_2.table_2.data_3");
    print "$content";
    $i++;
  }
}

【问题讨论】:

  • 定义“不起作用”?错误?您实际上并没有检查您的 SELECT 查询是否有效或产生错误
  • 警告:mysql_numrows():在第 88 行的 /web/htdocs/...etc 中提供的参数不是有效的 MySQL 结果资源 [$number = mysql_numrows($result);]
  • 表示查询失败
  • 为什么是like 条件?你不能简单地使用=(它更便宜)

标签: php mysql select


【解决方案1】:

问题不在于不同的数据库。

您的 WHERE 子句引用了 FROM 子句中未提供的字段 database_1.table_1.data_1。

你不是说类似

SELECT * 
FROM database_2.table_2 
JOIN database_1.table_1 
     ON (database_2.table_2.some_field = database_1.table_1.some_other_field) 
WHERE database_1.table_1.data_1 LIKE database_2.table_2.data_2

?

还有,

echo mysql_error();

查询失败后 - 这将为您提供有关问题所在的线索。

【讨论】:

  • 非法混合排序规则 (utf8_general_ci,IMPLICIT) 和 (utf8_unicode_ci,IMPLICIT) 用于操作 '='
  • SELECT * FROM database_2.table_2 JOIN database_1.table_1 ON (database_2.table_2.some_field = database_1.table_1.some_other_field) WHERE database_1.table_1.data_1 LIKE database_2.table_2.data_2 COLLATE utf8_general_ci
【解决方案2】:

numrows 不是下划线吗?

$number = mysql_num_rows($result);

http://php.net/manual/en/function.mysql-num-rows.php

【讨论】:

    【解决方案3】:

    试试这个

        SELECT * FROM database_2.table_2 t2 INNER JOIN database_1.table_1 t1 
        ON  t1.data_1 = t2.data_2
    

    【讨论】:

      猜你喜欢
      • 2012-09-24
      • 2016-12-17
      • 2019-02-09
      • 2015-09-09
      • 1970-01-01
      • 1970-01-01
      • 2022-01-26
      • 2022-01-16
      • 1970-01-01
      相关资源
      最近更新 更多