我正在为SQL查询准备Microsoft认证,我找到了这个例子:
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$data = curl_exec($ch);//get curl response
//done
curl_close($ch);
然后这个解释: 查询中的T-SQL表和列别名用于生成以名称空间为前缀的元素名称。 XML中使用冒号将命名空间与元素名称分开。 查询的WHERE子句将输出限制为两个客户,每个客户只检索的每两个订单。输出是一个非常好的以元素为中心的XML文档。
即使描述说每个客户需要每隔一个订单,但似乎并没有这样做。 即使当custid< = 2带来前两个客户时,我也不确定%2 = 0是什么,因为它没有为每个客户带来(或至少根据我的理解)每个第二个订单。对于第一个客户,它带来3个订单,而第二个客户带来两个订单。 这些都是订单:
WITH XMLNAMESPACES('TK461-CustomersOrders' AS co)
SELECT [co:Customer].custid AS [co:custid],
[co:Customer].companyname AS [co:companyname],
[co:Order].orderid AS [co:orderid],
[co:Order].orderdate AS [co:orderdate]
FROM Sales.Customers AS [co:Customer]
INNER JOIN Sales.Orders AS [co:Order]
ON [co:Customer].custid = [co:Order].custid
WHERE [co:Customer].custid <= 2
AND [co:Order].orderid %2 = 0
ORDER BY [co:Customer].custid, [co:Order].orderid
FOR XML AUTO, ELEMENTS, ROOT('CustomersOrders');
这是查询的结果(没有xml子句) custid companyname orderdate
custid companyname orderdate
1 Customer NRZBB 10643
1 Customer NRZBB 10692
1 Customer NRZBB 10702
1 Customer NRZBB 10835
1 Customer NRZBB 10952
1 Customer NRZBB 11011
2 Customer MLTDN 10308
2 Customer MLTDN 10625
2 Customer MLTDN 10759
2 Customer MLTDN 10926
有人可以解释一下这个where子句中的%是如何工作的吗? 我在很多地方尝试过,但它总是将%与运算符相关联,我认为情况并非如此。
答案 0 :(得分:1)
return Object.values(this.word.wordForms).some(
({ wordFormId }) => !this[`wordFormNgForm_${wordFormId}`].$pristine
);
是模运算符。 %
的一般形式是“将b除以b并检查余数”。在这里,您将a % b
除以2,并检查没有剩余的订单(即,仅返回orderid
)。
答案 1 :(得分:1)
%是T-SQL中的'modulo'运算符。以下是它的工作原理:获取orderId并将其除以'2' - 如果结果为0,则选择它。
因此,你的where子句是添加select语句的条件,以orderId作为偶数返回所有结果。检查您的结果,您会看到只返回偶数订单。