我试图选择某个类型,名称,特定ID中具有相同名称的条目的条目。最后一部分是我无法理解的棘手部分。Mysql查询排除某个条目
SELECT name FROM table WHERE type = $type AND (name is not contained in an entry with id).
我想要的结果是一个特定类型,但尚未包含在当前ID中的所有名称的集合。
我需要在这里执行两个查询吗?或者我可以将它凝聚成一个。
谢谢。
我试图选择某个类型,名称,特定ID中具有相同名称的条目的条目。最后一部分是我无法理解的棘手部分。Mysql查询排除某个条目
SELECT name FROM table WHERE type = $type AND (name is not contained in an entry with id).
我想要的结果是一个特定类型,但尚未包含在当前ID中的所有名称的集合。
我需要在这里执行两个查询吗?或者我可以将它凝聚成一个。
谢谢。
您可以使用此子查询:
SELECT name
FROM table
WHERE type = $type
AND name NOT IN (SELECT entry FROM t WHERE id = $id);
你的意思是,像这样:
SELECT name FROM table WHERE type = $type
AND name not in ('larry','moe','curly').
你能在你的架构提供更详细一点?具体的例子总是有用的
这与Zed给出的几乎完全一致,因为我有一个以上的“姓名”字段在 – Dirk 2009-08-17 20:01:53
如果将多个值与一个子查询这种方式返回行:
SELECT name FROM table
WHERE type = $type
AND (name, criteria, rank) NOT IN
(SELECT name, criteria, rank FROM t WHERE id = $id);
您必须确保列表(name, criteria, rank)
子查询选择的列相匹配。你不应该使用SELECT *
。
上不匹配。谢谢比尔,解决了我的问题 - 必须接受Zed的答案,但无论如何要感谢。 – Dirk 2009-08-17 20:20:21
没问题,Zed的回答更具体到你的第一个问题。 – 2009-08-17 20:33:39
感谢Zed,还有一件事 - 如果我有多个“名称”进行比较,该怎么办?类似于AND name,criteria,rank NOT IN(SELECT * FROM t ...)不起作用,我想确保名称和条件和排名不在 – Dirk 2009-08-17 20:00:03
我知道我可以做更多的子查询,但再次,我可以把它凝聚成一个吗? – Dirk 2009-08-17 20:01:04