【发布时间】:2016-12-14 11:19:25
【问题描述】:
我有两个表,我想从中加入一些列,以便为我的 java/hibernate 应用程序提供一个视图。它看起来像这样:
CREATE VIEW customer_contacts AS cc
SELECT DISTINCT ON (cust.id) cust.id
cust.company
cust.zip
...
con.name
con.forename
...
FROM contacts con
LEFT JOIN customer cust ON con.customer = cust.id
ORDER BY cust.id
到目前为止一切顺利。很简单。 如果我在视图上进行选择,例如:
SELECT *
FROM cc
WHERE name ilike '%schult%'
我得到 13 个结果。
如果我直接使用视图语句进行相同的查询
SELECT DISTINCT ON (cust.id) cust.id
cust.company
cust.zip
...
con.name
con.forename
...
FROM contacts con
LEFT JOIN customer cust ON con.customer = cust.id
WHERE name ilike '%schult%'
ORDER BY cust.id
我得到了 75 个结果! 我发现是 DISTINCT 破坏了结果。但是为什么呢?
又该如何正确使用呢?
【问题讨论】:
-
请显示您正在运行的“相同查询”的确切 SQL 文本。
-
嗨彼得,我澄清了我的问题,我已经写了直接声明。
-
但是您在第二个查询中忘记了条件
WHERE name ilike '%schult%'... -
没错!但是现在
标签: postgresql hibernate select view distinct