我对如何处理这个SQL查询感到有点困惑。
我有两个表(相同数量的记录),我想返回一个列,它是两者之间的区别。
换句话说,这是我的 not-working-correct 查询:
SELECT( (SELECT v FROM Table1) / (SELECT DotProduct FROM Table2) );
我该怎么做?我只想要一个列,其中每行等于Table1中的同一行除以Table2中的相同行。生成的表应该具有相同的行数,但是我得到的行比原来的两个表要多得多。
我完全失败了。有什么建议吗?
答案 0 :(得分:3)
听起来你在两张桌子之间有某种关键。你需要一个内部联接:
select t1.v / t2.DotProduct
from Table1 as t1
inner join Table2 as t2
on t1.ForeignKey = t2.PrimaryKey
应该有效。只要确保你注意零除错误。
答案 1 :(得分:2)
您没有指定完整的表结构,所以我将假设一个公共ID列来链接表中的行。
SELECT table1.v/table2.DotProduct
FROM Table1 INNER JOIN Table2
ON (Table1.ID=Table2.ID)
答案 2 :(得分:1)
您需要对表格进行JOIN并划分所需的列。
SELECT(Table1.v / Table2.DotProduct)FROM Table1 JOIN Table2 ON
您需要替换某事来告诉SQL如何匹配行: 类似于:Table1.id = Table2.id
答案 3 :(得分:0)
如果你的fileds都是整数,你需要这样做以避免整数数学:
select t1.v / (t2.DotProduct*1.00)
from Table1 as t1
inner join Table2 as t2
on t1.ForeignKey = t2.PrimaryKey
如果table2中有多个值与table1中的值有关,则需要指定使用哪个值 - 我选择了最大值。
select t1.v / (max(t2.DotProduct)*1.00)
from Table1 as t1
inner join Table2 as t2
on t1.ForeignKey = t2.PrimaryKey
Group By t1.v