我有三个表,我想查看其中任何一个表中是否存在一行。
这是我的三个查询。我怎样才能将它们合二为一?
$dbh->prepare("SELECT id FROM users WHERE email = :email");
$dbh->prepare("SELECT id FROM employees WHERE email = :email");
$dbh->prepare("SELECT id FROM teachers WHERE email = :email");
if(!$row) { // If row not found
// continue with registration
}
您可以使用UNION
查询。如果用户id
在多个表中有不同的值,这将返回多行,但因为您只需要知道是否存在一行或多行就可以了。
SELECT id FROM users WHERE email = :email
UNION
SELECT id FROM employees WHERE email = :email
UNION
SELECT id FROM teachers WHERE email = :email
或者,您可以使用EXISTS
表达式从查询中获取简单的是/否结果:
SELECT EXISTS (SELECT * FROM users WHERE email = :email)
OR EXISTS (SELECT * FROM employees WHERE email = :email)
OR EXISTS (SELECT * FROM teachers WHERE email = :email)
如果您想知道电子邮件地址在哪个表中,您可以修改UNION
查询以返回该信息:
SELECT 'users' AS `table`, id FROM users WHERE email = :email
UNION
SELECT 'employees', id FROM employees WHERE email = :email
UNION
SELECT 'teachers', id FROM teachers WHERE email = :email
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句