MySQL中的条件查询涉及2个表

时间:2015-09-07 20:28:36

标签: mysql

我有2个表TABLE 1TABLE 2,其定义如下:

SUB-ID  varchar(25)
CLICKS  int(5)
ACTIONS int(4)
EARNINGS    varchar(10)
EPC varchar(5)

我正在运行涉及这两个表的以下查询:

SELECT t1.CLICKS, t1.ACTIONS, t1.EARNINGS AS CurrentWeekEarnings
     , t2.EARNINGS AS PastWeekEarnings 
FROM `TABLE 1` AS t1, `TABLE 2` AS t2 
WHERE t1.`SUB-ID` = '" . $_POST['subId'] . "' 
  AND t2.`SUB-ID` = t1.`SUB-ID`

对于两个表中都存在给定subId的情况,查询工作正常,但在某些情况下,给定的subId存在于TABLE 1中但不存在于TABLE 2中,查询结果为0行。

现在,我是MySQL的新手,我根本没有在MySQL中使用条件查询的经验。

我确实知道,如果我可以指定TABLE 2中不存在给定subId的条件,则执行不同的查询,仅检索前3列,即来自{{的CLICKS,ACTIONS和EARNINGS 1}}并将PastWeekEarnings的值设置为$ 0.

请告诉我如何实现这一点,即如何有条件地在两个查询之间切换,以及当TABLE 1中没有subId时将PastWeekEarnings的值设置为$ 0。

由于

1 个答案:

答案 0 :(得分:1)

您应该考虑使用LEFT JOIN代替INNER JOIN

SELECT t1.CLICKS, 
t1.ACTIONS, 
t1.EARNINGS AS CurrentWeekEarnings,
t2.EARNINGS AS PastWeekEarnings 
FROM `TABLE 1` t1 LEFT JOIN `TABLE 2` t2 
ON t2.`SUB-ID` = t1.`SUB-ID`
WHERE t1.`SUB-ID` = '" . $_POST['subId'] . "';
相关问题