我在 mysql 中有两个表,其中包含有关用户的详细信息,例如电子邮件、名字和姓氏。
我想出了一种方法来欢迎登录的用户,但问题是两个表中的某些值相似,这会导致重复, 我想知道如何区分不同表中的值。
我试过这段代码,但没有用:
$query= "SELECT * FROM Table1 WHERE email = '".$_SESSION['Email']."' NOT IN (SELECT email = '".$_SESSION['Email']."' FROM Table2)";
最佳答案
您的查询是:
SELECT *
FROM Table1
WHERE email = '".$_SESSION['Email']."' NOT IN (SELECT email = '".$_SESSION['Email']."' FROM Table2)
表达式 email = '".$_SESSION['Email']."'
是一个 bool 表达式——本质上是 0
或 1
。
SELECT *
FROM Table1
WHERE email = '".$_SESSION['Email']."' and
email NOT IN (SELECT email from Table2 where email = '".$_SESSION['Email']."')
因为比较是相同的,所以更有效地写成:
SELECT *
FROM Table1
WHERE email = '".$_SESSION['Email']."' and
not exists (SELECT email from Table2 where email = '".$_SESSION['Email']."')
在两个表中对 email
进行索引将提高性能。
关于mysql - mysql中不同表的值之间存在差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17799709/