Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL/PHP:如果值不是0,则使用内部连接_Php_Mysql_Join - Fatal编程技术网

MySQL/PHP:如果值不是0,则使用内部连接

MySQL/PHP:如果值不是0,则使用内部连接,php,mysql,join,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,但没有值为0的table2.id,并且由于它是一个自动递增值,所以它从

我想使用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,但没有值为0的table2.id,并且由于它是一个自动递增值,所以它从1开始。我想从1点开始

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


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

那么,您实际需要的似乎是一个左连接。将返回表1中的所有行,即使表2中没有与表1.value4=0匹配的行


看起来,你真正想要的是一个左连接。将返回表1中的所有行,即使表2中没有与表1.value4=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
但表2中有一些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
试试这个:

如果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
但表2中有一些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

其中table1.value4 0-实际上,如果所有table2.id均为非零,则即使没有where clauseAs@dan_l所述,您的内部联接也不会拾取任何零table1.value4行-除非您的意思是,即使没有对应的table2值,也希望出现table1值。在这种情况下,你应该考虑左连接而不是内部连接。你尝试了一些测试数据吗?我认为丹妮是对的。你的加入应该会解决这个问题。我希望它能够拾取所有表1的值,即使表1.4的值为0,如果问题没有很好地解释,则表示抱歉。虽然将内部联接更改为左联接修复了此问题。where table1.value4 0-实际上,如果所有table2.id均为非零,则即使没有where clauseAs@dan_l所述,您的内部联接也不会拾取任何零table1.value4行-除非您的意思是,即使没有对应的table2值,您也希望table1值出现。在这种情况下,你应该考虑左连接而不是内部连接。你尝试了一些测试数据吗?我认为丹妮是对的。你的加入应该会解决这个问题。我希望它能够拾取所有表1的值,即使表1.4的值为0,如果问题没有很好地解释,则表示抱歉。虽然将内部连接更改为左连接修复了它。现在效果非常好!谢谢现在效果很好!谢谢