不同于mysql中不同表的值

时间:2013-07-23 00:41:58

标签: mysql distinct

我在mysql中有两个表,其中包含有关用户的详细信息,例如电子邮件,名字和姓氏。

我开始欢迎用户登录,但问题是两个表中的某些值是相似的,会导致重复, 我想知道如何区分不同表格中的值。

我尝试了这段代码但是没有用:

$query=  "SELECT * FROM Table1 WHERE email = '".$_SESSION['Email']."' NOT IN (SELECT email = '".$_SESSION['Email']."' FROM Table2)";  

2 个答案:

答案 0 :(得分:1)

您的查询是:

SELECT *
FROM Table1
WHERE email = '".$_SESSION['Email']."' NOT IN (SELECT email = '".$_SESSION['Email']."' FROM Table2)

表达式email = '".$_SESSION['Email']."'是一个布尔表达式 - 主要是01

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的索引可以提高性能。

答案 1 :(得分:0)

这两张桌子有相同的电子邮件吗?为什么呢?

好的,这里可能是一个解决方案,如果您只想从表1中获得会话电子邮件中的用户数据,请尝试以下方法:

$query = "SELECT t1.*, t2.* FROM table t1, table t2 WHERE t1.email <> t2.email AND t1.email = '".$_SESSION["Email"]."'";

推荐:尝试选择你真正需要的东西......电子邮件,用户名,姓名等......不是SELECT *