指定SELECT,然后与另一个表

时间:2016-02-14 22:05:38

标签: sql sql-server

我只是在我的SQL查询中从我的MS SQL Server中获取数据。

为了简化,我说有一张销售表和一张客户表。它们每个都有一个相应的userId,我可以用它来连接表格。

我希望首先从销售表中SELECT说价格等于10,然后将其加入userId,以便从客户表中访问名称和地址等。< / p>

我应该以哪种顺序构建查询?我需要某种子查询或我该怎么办?

我尝试过这样的事情

SELECT * 
FROM Sales
WHERE price = 10
INNER JOIN Customers
ON Sales.userId = Customers.userId;

毋庸置疑,这是非常简化的,而不是我的数据库架构,但它简单地解释了我的问题。 有什么建议 ?我在这里不知所措。

3 个答案:

答案 0 :(得分:2)

SELECT具有其组件的特定顺序

简单形式是:

  • 我该选择什么:列列表
  • 从哪里:表名和连接表
  • 是否有过滤器:WHERE
  • 如何排序:ORDER BY

所以:很可能将你的陈述改为

就足够了
SELECT * 
FROM Sales
INNER JOIN Customers ON Sales.userId = Customers.userId
WHERE price = 10;

答案 1 :(得分:1)

ViewConfiguration.getLongPressTimeout()子句必须遵循连接:

WHERE

这就是SQL语法的工作方式。您似乎试图按照您认为应该应用的顺序放置子句,但SQL是声明性语言,而不是程序性语言 - 您定义了要发生的内容,而不是它将如何完成。

你也可以这样写:

SELECT * FROM Sales
INNER JOIN Customers
ON Sales.userId = Customers.userId
WHERE price = 10

这似乎表示操作发生的顺序不同,但它在逻辑上与第一个查询相同,在任何一种情况下,数据库引擎都可以确定以任何顺序执行连接和过滤操作,如只要结果相同。

答案 2 :(得分:0)

对我来说听起来不错,你运行了查询并检查了吗?

SELECT s.*, c.*
FROM Sales s

INNER JOIN Customers c 
ON s.userId = c.userId;

WHERE s.price = 10