0

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

原因是我有一个功能:

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

我知道这仅在表具有相同结构的情况下才有效。就我而言,情况并非如此。

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

表 1 是这样的:

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

表2就像:

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

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

4

3 回答 3

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' 
)
于 2013-03-01T12:55:14.407 回答
1

您需要使用 UNION:

SELECT email
FROM   table1
UNION
SELECT email
FROM   table2

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

于 2013-03-01T12:55:29.233 回答
0

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

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

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

于 2013-03-01T12:55:32.270 回答