我想知道是否可以进行查询,其中将检查两个不同的表,因此行数将返回,甚至是真/假。
原因是我有一个功能:
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,但没有弄清楚该怎么办?
答案 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
答案 2 :(得分:0)
您可以使用SELECT email FROM table1 where Email = '$email' union SELECT email FROM table2 where Email = '$email'
等工会。
您必须记住,两个查询的选定列数必须相同。
此外,当您实际上不需要它们时获取行是浪费资源 - 只需直接从数据库中获取匹配行的数量。