SQL重复记录中的关系查询

时间:2013-02-22 19:07:13

标签: sql vb6

我正在尝试在SQL中链接两个表,但它没有做我想要的。 我有一个table1有两个字段id,Total和其他Table2包含20个字段,我只想提取5个ID,名称,地址,城市,省。我的查询如下:

SELECT Table1.id, Table2.name, Table2.address, Table2.city, Table2.province, Table1.Total
  FROM Table1 INNER JOIN Table2 ON
 WHERE Table2.id Table1.Total Table1.id => = "& CLng (number1.Text ) &
  "AND Table1.Total <=" & CLng (number2.Text) &
"ORDER BY ASC Table2.name"

目的是将两个表关联起来,但问题是生成的查询有重复的结果。我认为原因是,例如,我有一些具有相同id但具有不同名称的数据,并且尽管具有相同的id,但它尝试将不同的数据放在不同的行中。

我花了很多时间搜索解决方案,但我找不到它。

4 个答案:

答案 0 :(得分:1)

您没有正确指定ON子句。请尝试删除单词WHERE,以便实际将联接限制为相关行,而不是完全加入。

答案 1 :(得分:0)

使用左外连接而不是内连接

检查sql。也许你期待如下。

SELECT Table1.id, Table2.name, Table2.address, Table2.city, Table2.province, Table1.Total 
FROM    Table1 
LEFT OUTER JOIN Table2 
        ON Table2.id =Table1.id 

WHERE Table1.Total = '' AND Table1.Total <= ''
ORDER   BY  Table2.name ASC

答案 2 :(得分:0)

试试这个

SELECT Table1.id, Table2.name, Table2.address, Table2.city, Table2.province, Table1.Total
FROM Table1 INNER JOIN Table2 ON
Table2.id = Table1.id  WHERE Table1.Total >=  CLng(number1.Text) AND Table1.Total <= CLng(number2.Text)  
GROUP BY Table2.name 
ORDER BY ASC Table2.name"

答案 3 :(得分:0)

您可以使用“DISTINCT”语句仅返回不同的(不同的)值。重复的行只返回一次。

您的SQL查询语法错误。也许它会返回重复的行,因为那样。 但是如果在修复它之后仍然返回重复的行,则Table2必须具有多个具有相同id的行。在这种情况下,您可以使用DISTINCT语句。

正确的SQL查询是:

SELECT DISTINCT Table1.id, Table2.name, Table2.address, Table2.city, Table2.province, Table1.Total
FROM Table1 INNER JOIN Table2 ON  Table1.id = Table2.id 
     AND Table1.total BETWEEN minValue AND maxValue 
ORDER BY ASC Table2.name

(minValue和maxValue是数字)

在VB语法

" SELECT Table1.id, Table2.name, Table2.address, Table2.city, Table2.province, Table1.Total " _
" FROM Table1 INNER JOIN Table2 ON  Table1.id = Table2.id " & _
"      AND Table1.total BETWEEN " & CLng (number1.Text ) &  "AND " & CLng (number2.Text) & _ 
"ORDER BY ASC Table2.name "