我有一个查询,我目前正在获取ORA-01427:单行子查询返回多个行错误。我明白这个错误,是什么造成的,但无法找出解决的办法。我也想在一个查询中做到这一点。以下是我目前有:需要困难的SQL查询帮助
SELECT v1.internal_code,
(SELECT terms_id
FROM terms
WHERE term_start_date =
(SELECT MIN (term_start_date)
FROM terms
WHERE terms_id LIKE '%SU'
AND term_start_date >
(SELECT term_start_date
FROM terms
JOIN
vals
ON terms_id =
internal_code
WHERE internal_code =
v1.internal_code
AND valcode_id =
'TERMS')))
AS mmTerm
FROM terms
JOIN
vals v1
ON terms_id = internal_code
WHERE internal_code LIKE '%SP' AND valcode_id = 'WEB.SEARCH.TERMS'
ORDER BY mmTerm ASC
而且丘壑表的相关部分将是这样的:
internal_code valcode_id
------------- ----------
2003SP TERMS
2004SP TERMS
2005SP TERMS
好了,大子查询试图获取与“SU结束的任何条款'term_start_date大于vals表中术语的term_start_date。所以期望的结果是:
v1.internal_code mmTerm
---------------- ------
2003SP 2003SU
2004SP 2004SU
2005SP 2005SU
我知道这很难理解,所以请问如果有任何问题。此外,任何建议都很乐意接受。谢谢!
编辑:我想通了。只需做一些修改,谢谢你的建议。我会发布它,如果任何人有兴趣看到最后的查询
它是mysql还是microsoft sql server? – reggie
这我不确定,我使用Oracle 10g的Toad。这听起来是对的吗? – Dan
这似乎意味着'terms'中有多行具有'term_start_date'的相同值。是这种情况,如果是这样,为什么?似乎多个词语应该没有相同的开始日期。 –