num_rows通过mysql查询中的2个表?

时间:2013-03-01 12:52:40

标签: php mysql

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

原因是我有一个功能:

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;
}

我知道这只有在表具有相同结构时才有效。就我而言,它不是那样的。

这两个表只有“email”字段,但没有别的。

table1就像:

field_1 | field_2 | field_3 | field_4 | field_5 | field_6(电子邮件) | field_7 | field_8 | field_9

table2就像:

field_1 | field_2 | field_3 | field_4 | .... | field_17(电子邮件) | field_18 | field_19 | field_20

所以我想知道这是否可行?我查看了JOIN,但没有弄清楚该怎么办?

3 个答案:

答案 0 :(得分:2)

尝试以下:

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' 
)

答案 1 :(得分:1)

您需要使用UNION:

SELECT email
FROM   table1
UNION
SELECT email
FROM   table2

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

答案 2 :(得分:0)

您可以使用SELECT email FROM table1 where Email = '$email' union SELECT email FROM table2 where Email = '$email'等工会。

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

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