我正在尝试在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,但它尝试将不同的数据放在不同的行中。
我花了很多时间搜索解决方案,但我找不到它。
答案 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 "