MYSQL中的查询相反

时间:2013-02-26 10:45:56

标签: mysql sql

我有以下两个表:A和B

B包含A:a_id。

的外键

我有以下查询:

  

SELECT a。* FROM a INNER JOIN b ON ba_id = aid WHERE   b.stuff = 1 AND(QueryCheckingDateWithBFields)

我想反转查询,所以我这样做了:

  

SELECT a。* FROM a INNER JOIN b ON ba_id = aid WHERE   b.stuff!= 1 OR(!QueryCheckingDateWithBFields)

除一个问题外,它工作正常。我希望我的第一个查询+我的第二个查询=所有A表条目。但如果没有带有a_ID A的B,则不会选择此A.我怎么能说“我也想要一个没有加入的A?”

2 个答案:

答案 0 :(得分:4)

使用left outer join代替inner join并调整where子句以支持没有B时的情况:

SELECT a.* FROM a LEFT OUTER JOIN b ON b.a_id = a.id
WHERE b.id == null OR (b.stuff = 1 AND (QueryCheckingDateWithBFields))

SELECT a.* FROM a LEFT OUTER JOIN b ON b.a_id = a.id
WHERE b.id == null OR b.stuff != 1 OR (!QueryCheckingDateWithBFields)

答案 1 :(得分:2)

使用LEFT JOIN而不是INNER JOIN