【发布时间】:2010-03-31 16:29:04
【问题描述】:
我有一个表,其中包含需要从查询中搜索的两个字段(custno 和 custno2)。这张桌子不是我设计的,所以不要对我大喊大叫。 :-) 我需要找到 custno 或 custno2 与基于 titleno 的同一表上的查询返回的值匹配的所有记录。
换句话说,用户输入 1234 作为 titleno。我的查询搜索表以找到与 titleno 关联的 custno。它还查找该titleno 的custno2。然后,它需要在同一个表中搜索所有其他记录,这些记录在之前的搜索中返回 custno 或 custno2 字段中的 custno 或 custno2 字段。
这是我想出的:
SELECT BILLYR, BILLNO, TITLENO, VINID, TAXPAID, DUEDATE, DATEPIF, PROPDESC
FROM TRCDBA.BILLSPAID
WHERE CUSTNO IN
(select custno from trcdba.billspaid where titleno = '1234'
union select custno2 from trcdba.billspaid where titleno = '1234' and custno2 != '')
OR CUSTNO2 IN
(select custno from trcdba.billspaid where titleno = '1234'
union select custno2 from trcdba.billspaid where titleno = '1234' and custno2 != '')
查询返回数据大约需要 5-10 秒。可以重写以更快地工作吗?
【问题讨论】:
-
对于什么数据库(版本也是)?
-
表格可以同时填写custno和custno2吗?
标签: sql performance subquery