【发布时间】:2012-08-02 18:39:58
【问题描述】:
是否可以在子查询的结果中不显示某些内容。
示例: table1:有 4 个数字,1,2,3,4。 所以 select * from table1 显示 4 个结果
是否可以制作:
select * from table1 where not exists(select * from table1 where num = 3)
所以结果将是 1,2,4。基本上从结果中删除子查询结果中的内容。
我知道存在对此不起作用,因为它只给出真假,但还有其他方法吗?
谢谢大家。
【问题讨论】:
-
在这个例子中,
select * from table1 where num <> 3可以解决问题。 -
@Matt,但答案是:有可能 ;)
-
@arnoudhgz 是的,但是“是”的答案太短了,不能离开。 :-)
-
@vexen 如果要比较不同表中的值,您将需要
JOIN。 This chart 非常清楚地传达了这个概念。 -
@Matt 我知道我需要一个 JOIN 语句来进行更复杂的查询,它只是在我的真实查询中我试图排除某些人并且仅在某些情况下。接下来是真正的查询 =) 现在正在工作...... SELECT distinct id,nombre, apellido1,apellido2, personas.seccion from personas LEFT JOIN votaciones on personas.id = votaciones.id_persona WHERE personas.seccion = 1 AND mesa = 'A' AND (id_eleccion IS NULL OR id NOT IN (SELECT id FROM personas JOIN votaciones ON personas.id = votaciones.id_persona WHERE id_eleccion =1))