【问题标题】:PostgreSQL Select values two columnsPostgreSQL 选择值两列
【发布时间】:2014-09-04 14:22:55
【问题描述】:

我有一个包含几列的表,我正在尝试选择两列中相等的值。

我正在创建一个简单的选择

select * from table_name where column1 = column_2

但它什么也不返回。

我做得对吗?当然不是,除非它可以工作:) 但是,例如,如果我使用运算符

!=

它返回正确的行。发生了什么?

【问题讨论】:

  • 查询似乎正确。您可以为您的表和一些示例数据添加 DDL 吗?
  • 显示表定义和一些数据。两行的情况是否相同?有空格吗? col1 = col2 没有返回任何行的原因有很多。
  • 值是NULL吗?两列的类型是否相同。
  • 我的数据类型都是整数:/

标签: sql database postgresql select


【解决方案1】:

我没有重现您的问题,这表明您在创建表格时可能犯了一个错误?我认为查询不是问题。

这是我的示例,一步一步来。首先,我们创建表(我使用的是 PostgreSQL 9.1):

CREATE TABLE example(
id int,
name1 text,
name2 text
);

然后我用这些行填充它:

INSERT INTO example (id, name1, name2)
VALUES (0, 'Bird', 'Cheese');
INSERT INTO example (id, name1, name2)
VALUES (1, 'Bear', 'Honey');
INSERT INTO example (id, name1, name2)
VALUES (2, 'Fish', 'Fish');
INSERT INTO example (id, name1, name2)
VALUES (3, 'Bread', 'Bread');

好的,所以现在,当我使用您的格式的查询时,我应该得到 id = 2 和 id = 3 的行:

SELECT * FROM example WHERE name1 = name2;

返回正确的结果:

 id | name1 | name2
----+-------+-------
  2 | Fish  | Fish
  3 | Bread | Bread

我建议你试试这个例子,看看它是否适用于你的 PostgreSQL 版本。如果是这样,太棒了!这意味着您的表实现中可能只是某个地方的错误(可能是不匹配的数据类型?)。如果示例不起作用,则可能是您的 PostgreSQL 版本有问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-09
    • 1970-01-01
    • 1970-01-01
    • 2023-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-28
    相关资源
    最近更新 更多