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

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

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

但是我想知道如何设置一个 where 子句,它只应该在不等于 0的情况下获取table2值。table1.value4

4

2 回答 2

3

看来,你真正想要的是一个LEFT JOINthen。将返回来自的所有行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
于 2012-07-15T14:08:29.120 回答
0

试试这个::

如果您在 table2 id 中没有 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

但是 table2 中有一些 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
于 2012-07-15T14:11:42.970 回答