sql - 比较行后显示同一列的两个值(使用内连接)
问题描述
当您执行内部联接以比较同一列但不同行的 2 个值时。如何包含同一列的两个比较值?没有错误“列指定多次”
在新表中,我想查看 a.var2 和 b.var2。
CREATE TABLE newtable AS
SELECT
a.var1,
a.var2,
CASE WHEN a.var2 = b.var2 THEN 'yes' AS equal
FROM
(
SELECT * FROM table
WHERE var3 = x
) a
INNER JOIN (
SELECT * FROM table
WHERE var3 = y
) b ON a.var1 = b.var1
解决方案
您需要两列的别名:
CREATE TABLE newtable AS
SELECT
a.var1,
a.var2 AS a_var2,
b.var2 AS b_var2,
a.var2 = b.var2 AS equal
FROM (SELECT * FROM table WHERE var3 = 'x') a
JOIN (SELECT * FROM table WHERE var3 = 'y') b ON a.var1 = b.var1;
PostgreSQL 有一个布尔类型。我在上面的查询中使用它,我通常建议这样做,而不是使用带有 'yes'/'no'、'YES'/'NO'、'Y'/'N' 或您碰巧决定的任何值的字符串为了。布尔数据类型在这里是合适的类型。但是,在这种特定情况下,我根本不会写它,因为信息是多余的。只要看看这两列,你就知道它们是否相等。
推荐阅读
- reactjs - 如何使用 yield select 管理接受参数的选择器?
- multithreading - 如何多线程解析JMS消息
- javascript - 我想使用 Reactjs 根据数组拥有的图像数量显示数组中的 ImagesUrl
- postgresql - 无法在 DEFAULT 表达式中使用列引用 - 尝试为自定义列名设置默认值
- java - 从现有源 eclipse 生成 uml
- ruby-on-rails - 为什么这个尝试 HTTP API 调用的 Ruby 代码会挂起进程?
- c# - Web 将 ASP.Net Core 部署到 ISS 后的开发模式错误
- python - 在python的for循环中对多个文件进行更改
- r - solve.default(gamma[[g]]) 中的错误:系统在计算上是奇异的:倒数条件数 = 7.51229e-20
- go - 防止按值调用自定义(别名)类型的接收器方法?