当前位置: 首页 > 知识库问答 >
问题:

MySQL不在同一表的另一列中

颜安宁
2023-03-14

我想运行一个mysql查询,从一个表中选择所有行,films,其中title列的值在另一列(collection)的所有值中的任何位置都不存在。

以下是我的表格的简化版本,其中包含以下内容:

mysql> select * from films;
+----+--------------+--------------+
| id | title        | collection   |
+----+--------------+--------------+
|  1 | Collection 1 | NULL         |
|  2 | Film 1       | NULL         |
|  3 | Film 2       | Collection 1 |
+----+--------------+--------------+

我的问题是:

mysql> SELECT * FROM films WHERE title NOT IN (SELECT collection FROM films);
Empty set (0.00 sec)

在本例中,我希望选择标题为Film 1Film 2的行,但我的查询没有返回任何行。

以下是表格结构:

CREATE TABLE `films` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(200) NOT NULL DEFAULT '',
  `collection` varchar(200) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM;

共有3个答案

李良策
2023-03-14

使用外部联接的另一个选项

SELECT f.* 
FROM films f LEFT OUTER JOIN films ff
ON f.title = ff.collection
WHERE ff.collection IS NULL
欧阳杰
2023-03-14

您是否尝试过使用不存在

SELECT * 
FROM films f1
WHERE NOT EXISTS (SELECT collection 
                  FROM films f2
                  WHERE f1.title = f2.collection);

看SQL摆弄演示

如果您想使用IN,那么您将需要查找NO NULL的值:

SELECT * 
FROM films 
WHERE title NOT IN (SELECT collection 
                    FROM films
                    WHERE collection is not null);

看SQL摆弄演示

两者的结果都是:

| ID |  TITLE |   COLLECTION |
------------------------------
|  2 | Film 1 |       (null) |
|  3 | Film 2 | Collection 1 |

您当前查询的问题是——从@Quassnoi的答案中窃取:

INnotin都返回NULL,这对于WHERE子句来说是不可接受的条件。

由于子查询返回了null值,因此您希望明确地排除它。

谭畅
2023-03-14
SELECT * 
FROM films 
WHERE title NOT IN (SELECT collection FROM films where collection is not null);

SQLFiddle:http://sqlfiddle.com/#!2/76278/1

 类似资料:
  • 问题内容: 我想运行mysql查询以从表中选择所有行,其中该列的值在另一列()的所有值中都不存在。 这是我的表格的简化版本,其中包含内容: 这是我的查询: 在此示例中,我想选择标题为和的行,但查询未返回任何行。 这是表的结构: 问题答案: SQLFiddle:http ://sqlfiddle.com/#!2/76278/1

  • 我使用嵌套的Select语句从表1中获得单行结果,我需要在同一行的末尾追加表3中的另一列(COLX)。我试过联合,但结果是两行。有什么建议吗? table2.colz和table3.colx是用来匹配条目的ID。这两个最终结果都符合要求。 编辑(进一步解释我的表结构) COLX是表3的ID,以匹配表2中的COLZ 表2 ID中的COL1与表1中的COL1匹配 结果我需要的是表1.col1,表1.c

  • 如何在同一表中从一列插入值到另一列? 说我有: 我要求: 换句话说,我想复制'Suburb2'和'Date',并将它们分别作为新行插入'Date'和'suburban'。 我知道我可以通过首先复制到临时列/s并稍后清理来实现这一点,但我想知道是否有一种方法可以在一个查询中实现这一点? 我试过了 但得到的列“日期”不存在错误。

  • 问题内容: 如何将值从一列复制到另一列?我有: 我希望有: 我应该有哪些mysql查询? 问题答案: 有关代码的简短答案是: 这是表名,周围是重音符号(又称“-”),因为这是MySQL惯例,用于转义关键字(在这种情况下为关键字)。 请注意,这是非常危险的查询,它将擦除表每行中列中的所有内容,并替换为(无论其值如何) 使用子句将查询限制为仅特定的行集更为常见:

  • 问题内容: 我需要将一个列的数据插入同一表中的另一列。 有人可以告诉我该怎么写吗? 谢谢 问题答案:

  • Hi StackOverFlow成员 reports=表名。 数据库 这是数据库表: 我想 当我运行这段代码时.. 它返回AllTotal