在MySQL查询中相互检查两个表

时间:2010-10-11 04:10:18

标签: php mysql database data-structures

我觉得我正在写一个单词问题,但这真让我感到困惑,我真的希望有人可以解决它:

我想从表A中选择一行。表A包含属性Name和Number。但在我完成查询之前,我想根据表B进行检查。表B包括用户的名称,编号和用户名。 根据用户的输入,它在表B中插入包含其用户名以及名称和编号的行。 现在在我从表A中选择一行的查询中,我想确保表B中没有与该特定用户匹配的名称和编号的行。

我已经尝试过WHERE(A.Name = B.Name AND A.Number = B.Number AND B.Username!='$ username')但是我觉得我已经离开那里了。 任何帮助都会......太棒了。

3 个答案:

答案 0 :(得分:2)

SELECT
   A.id
FROM
   A
   LEFT OUTER JOIN B ON
      (A.Name = B.Name AND A.Number = B.Number)
WHERE
   B.Name IS NULL
   AND B.Number IS NULL
   AND B.Username = ?

答案 1 :(得分:1)

select a.id
from a
where
a.name=:name
and
not exists(select 1 from b where b.id=a.id and b.name=a.name)

答案 2 :(得分:0)

  IF NOT EXISTS  ( SELECT 1 
       FROM tableA a
       INNER JOIN tableB b
       ON a.name = b.name
       AND a.number= b.number
       AND b.UserName = 'user' and b.name = 'name'and b.number = 'number')
  SELECT *
  FROM tableA x
  WHERE x.name = 'name'and x.number = 'number'