Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/121.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
Sql 仅当字段大于零时联接_Sql_Database_Join - Fatal编程技术网

Sql 仅当字段大于零时联接

Sql 仅当字段大于零时联接,sql,database,join,Sql,Database,Join,如果houses.owner\u id大于零,我是否可以加入persons而不是进行2次查询 SELECT * FROM houses INNER JOIN persons ON persons.id = houses.owner_id WHERE houses.id = id 尝试: 不确定为什么所有者id小于0?也许是一个糟糕的数据库设计。另外,SELECT*被认为是不好的做法,请尝试明确说明您的列 为什么不把它作为where条件传入呢 SELECT * FROM houses IN

如果houses.owner\u id大于零,我是否可以加入persons而不是进行2次查询

SELECT * FROM houses 
INNER JOIN persons ON persons.id = houses.owner_id 
WHERE houses.id = id
尝试:


不确定为什么所有者id小于0?也许是一个糟糕的数据库设计。另外,
SELECT*
被认为是不好的做法,请尝试明确说明您的列

为什么不把它作为where条件传入呢

SELECT * FROM houses 
INNER JOIN persons ON persons.id = houses.owner_id 
WHERE houses.id = id AND houses.owner_id > 0

您必须使用house.owner\u id>0的计数。需要使用and group by子句。另外,这不是一个好的SQL设计。

其他答案可能是您想要的,但是,为了完整性,您可能需要调整
JOIN
子句:

SELECT * FROM houses 
INNER JOIN persons ON persons.id = houses.owner_id AND houses.owner_id > 0
WHERE houses.id = id

将条件移动到联接的条件中:

SELECT * FROM houses 
JOIN persons ON persons.id = houses.owner_id 
    AND houses.owner_id > 0
WHERE houses.id = id
只有当所有者id>0时,才会加入



这个查询有点奇怪,因为您没有使用连接的数据。

您希望结果包含owner\u id=0的房屋吗?您不能只执行
WHERE houses.id=id和houses.owner\u id>0
?我可能应该将其作为一个答案而不是注释来编写。WHERE houses.id=id应该做什么?这将导致名称引用不明确,因为两个表都有一个
id
,并且它看起来好像预期的连接条件是
persons.id=houses.owner\u id
。同意-有趣-但可能它的意思是“某人拥有的房子”
SELECT * FROM houses 
JOIN persons ON persons.id = houses.owner_id 
    AND houses.owner_id > 0
WHERE houses.id = id