Php 列的select值不存在
我有这个php查询Php 列的select值不存在,php,mysql,database,opencart,Php,Mysql,Database,Opencart,我有这个php查询 $sql = "SELECT * FROM store AS s LEFT JOIN setting as set ON (s.store_id = set.store_id)"; $sql .= " WHERE (set.key = 'config_template' OR set.key IS NULL)"; $sql .= " ORDER BY url"; $query = $this->db->query($s
$sql = "SELECT *
FROM store AS s
LEFT JOIN setting as set ON (s.store_id = set.store_id)";
$sql .= " WHERE (set.key = 'config_template' OR set.key IS NULL)";
$sql .= " ORDER BY url";
$query = $this->db->query($sql);
我想做的是返回key
等于“config_template”的所有行。但是,如果没有与“config_template”匹配的键,我仍然希望返回该行,除非列key
为空
我曾考虑过使用不在
或不存在
,但我不确定在这种情况下如何使用它们?问题就在这里
$sql .= " WHERE (set.key = 'config_template' OR set.key IS NULL)";
在此where
子句中,两个条件都是true或false,但当两个条件都为false时,它将失败
试试这个
$sql .= " WHERE (set.key = 'config_template' OR set.key IS NULL) OR/AND SECOND_CONDITION ";
通过这种方式,您肯定会得到结果。将密钥的条件移动到连接条件中应该可以做到这一点:
SELECT *
FROM store AS s
LEFT JOIN setting as set
ON s.store_id = set.store_id AND set.key = 'config_template'
ORDER BY url
我认为上面的查询很好,因为您已经使用了
set.key为NULL
。您是否尝试过使用右连接
?您说过您想要一个特定的商店id
,但您没有在查询中指定它?另外,是否可以在设置中的存储id
的同一下同时使用key='config_template'
和key为NULL
?如果是,您将得到两行。我已经更新了问题,我想要所有的店铺ID。只会有key='config_template',或者它不存在,永远不会两者都存在。