MySQL / PHP:如果value不为0,则使用inner join

时间:2012-07-15 13:53:59

标签: php mysql join

我想使用一个从表中获取数据的select查询。

看起来像这样

SELECT table1.value1, table1.value2, table1.id, table2.id, table2.value2
FROM table1
INNER JOIN table2
ON table2.id = table1.value4
ORDER BY table1.id DESC
LIMIT 10

虽然table1.value4有时可能为0且没有table2.id的值为0,并且因为它是自动增量值,所以它从1开始。我希望它从1开始。< / p>

因为当它等于0时,那个特定的行不可用,只有其他行。

但我想知道如果table2不等于0,如何设置一个where子句,它只能得到table1.value4值。

2 个答案:

答案 0 :(得分:2)

然后,您实际想要的是LEFT JOIN。即使table1中没有匹配项(与table2一样),也会返回table1.value4 = 0中的所有行。

SELECT table1.value1, table1.value2, table1.id, table2.id, table2.value2
FROM
  table1
  LEFT JOIN table2
    ON table2.id = table1.value4
ORDER BY table1.id DESC
LIMIT 10

答案 1 :(得分:0)

试试这个::

如果你在表2中没有0,则以下查询正常工作::

SELECT table1.value1, table1.value2, table1.id, table2.id, table2.value2
FROM table1
INNER JOIN table2
ON table2.id = table1.value4
ORDER BY table1.id DESC
LIMIT 10

但是表中有一些id为0的值,你希望忽略

SELECT table1.value1, table1.value2, table1.id, table2.id, table2.value2
FROM table1
INNER JOIN table2
ON (table2.id = table1.value4 and table1.id!=0)
ORDER BY table1.id DESC
LIMIT 10