mysql具有特定关系或没有任何关系的所有行

s6fujrry  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(302)

我在两个表之间做一个复杂的查询。我需要有特定关系的行和没有特定关系的行。
例如:
要素

|---------------------|------------------|
|          id         |       name       |
|---------------------|------------------|
|          1          |         a        |
|---------------------|------------------|
|          2          |         b        |
|---------------------|------------------|
|          3          |         c        |
|---------------------|------------------|

元素属性

|------------------|--------------------|
|    id_element    |      id_attribute  |
|------------------|--------------------|
|         1        |         55         |
|------------------|--------------------|
|         1        |         78         |
|------------------|--------------------|
|         3        |         55         |
|------------------|--------------------|

我需要的是所有没有属性78的元素,所以在这个例子中它应该输出2和3。
我试过了

SELECT *
FROM element
LEFT JOIN element_attributes
ON (element.id = element_attributes.id_element AND element_attributes.id_element != 78)

但例如,在元素1上,它与第一个attributes行进行左连接,并且是55,因此它以结果结束,这不是我所期望的行为。
谢谢

eiee3dmh

eiee3dmh1#

使用 not exists :

select e.*
from element e
where not exists (select 1
                  from element_attributes ea
                  where ea.id_element = e.id and e.id_element = 78
                 );

相关问题