我想使用一个从表中获取数据的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
值。
答案 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