【问题标题】:num_rows through 2 tables in a mysql query?num_rows 通过 mysql 查询中的 2 个表?
【发布时间】:2013-03-01 12:52:39
【问题描述】:

我想知道是否可以进行查询,其中将检查两个不同的表,结果将返回行数,甚至返回真/假。

原因是我有一个函数:

function exists($email){
    global $db;
    $query = $db->query("SELECT Email FROM table1, table2 WHERE Email= '$email' ");
    $check = $query->num_rows;
    return ($check == 1) ? true : false;
}

我知道这仅适用于表具有相同结构的情况。就我而言,情况并非如此。

这两个表只有共同的“电子邮件”字段,但没有其他内容。

table1 是这样的:

field_1 |字段_2 |字段_3 |字段_4 |字段_5 | field_6(电子邮件)|字段_7 |字段_8 | field_9

table2 是这样的:

field_1 |字段_2 |字段_3 |字段_4 |.... | field_17(电子邮件)| field_18 | field_19 | field_20

所以我想知道这是否可能?我查看了 JOIN,但不知道该怎么做?

【问题讨论】:

  • mysql fiddle,用你当前的表建立一个设置,这样我们就清楚你的结构是什么了。
  • 或者提供一个例子,这样它就不会对你的要求感到困惑。

标签: php mysql


【解决方案1】:

试试下面:

SELECT SUM(cnt) as total_count
(
SELECT COUNT(*) as cnt FROM table1  WHERE Email= '$email' 
UNION 
SELECT COUNT(*) as cnt FROM table1  WHERE Email= '$email' 
)

【讨论】:

    【解决方案2】:

    你需要使用 UNION:

    SELECT email
    FROM   table1
    UNION
    SELECT email
    FROM   table2
    

    http://dev.mysql.com/doc/refman/5.0/en/union.html

    【讨论】:

      【解决方案3】:

      您可以使用联合,例如SELECT email FROM table1 where Email = '$email' union SELECT email FROM table2 where Email = '$email'

      您必须记住,两个查询的选定列数必须相同。

      此外,当您实际上不需要它们时获取行是一种资源浪费 - 只需直接从数据库中获取匹配行的计数。

      【讨论】:

      • 你好,请问选择的列数必须相同是什么意思?我更新了我的问题。谢谢。
      • 这意味着select关键字之后的字段计数必须相同,例如。 select foo from table1 union select bar from table2 可以,但select foo, baz from table1 union select bar from table2 不行。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-28
      • 2015-04-04
      • 2012-06-25
      相关资源
      最近更新 更多