MySQL使用NULL值保持连接

时间:2016-07-05 07:07:39

标签: mysql

我确信这已被提出并已经回答,但不知道问题到底应该是什么。

我有两张桌子

ID | name
=========
 1 | foo
 2 | bar
 3 | lou
 4 | sue

和元表:

p_ID | key | value
===================
  1  | poo | 1
  2  | zoo | 'whatever'
  3  | clu | 423
  4  | poo | 1

我希望从第一个表中获取未分配poo值的所有条目:

ID | name
=========
 2 | bar
 3 | lou

我的方法是

SELECT * 
  FROM table AS p 
  LEFT JOIN meta AS m 
    ON m.p_id = p.ID 
 WHERE m.key = 'poo' 
   AND m.value IS NULL

但这会返回一个空结果

3 个答案:

答案 0 :(得分:2)

您必须将If InStr(1, .Column(j, i), UserForm1.TextBox2.Text, vbTextCompare) Then 表达式移动到ON子句中。即使在LEFT JOIN中,WHERE子句中的所有内容都必须存在。

m.key = 'poo'

答案 1 :(得分:1)

我认为你应该想要这个;)

<script type="text/javascript">
var change = function () {
    callbackObj.changeText();
}
</script>
<button id="test-btn" onclick="change()">click me to change text of label1</button>   

SELECT * FROM table AS p LEFT JOIN meta AS m ON m.p_id = p.ID AND m.key = 'poo' WHERE m.value IS NULL 子句中使用m.key = 'poo'时,这将计算为WHERE,因此您只能获得INNER JOIN的记录,而不是表中的所有行。

答案 2 :(得分:0)

您可以改为使用INNER JOIN

SELECT *
    FROM `table` T
    INNER JOIN meta M ON M.p_id = T.ID
    WHERE M.key <> 'poo'