我而使用的u-SQL查询follwowing得到complilation错误。我想要显示@UpdatedCourseData中不存在的所有记录。 如何在U-SQL中实现这一点?如何在USQL中使用子查询?</p> <pre><code>@CourseDataExcludingUpdatedCourse = SELECT * FROM @CourseData AS cd WHERE cd.CourseID NOT IN (SELECT CourseID FROM @UpdatedCourseData); </code></pre> <p>这不是让我在子查询中使用<code>NOT IN Clause</code>:
4
A
回答
3
以U-SQL NOT EXISTS
实现为ANTISEMIJOIN
,这样的事情:
@CourseDataExcludingUpdatedCourse =
SELECT cd.*
FROM @CourseData AS cd
ANTISEMIJOIN
@UpdatedCourseData AS us
ON cd.courseId == us.courseId;
这里看到更多的信息:
https://msdn.microsoft.com/en-us/library/azure/mt621330.aspx
2
@employees =
SELECT * FROM
(VALUES
(1, "Noah", 100, (int?)10000, new DateTime(2012,05,31)),
(2, "Sophia", 100, (int?)15000, new DateTime(2012,03,19)),
(3, "Liam", 100, (int?)30000, new DateTime(2014,09,14)),
(4, "Amy", 100, (int?)35000, new DateTime(1999,02,27)),
(5, "Justin", 600, (int?)15000, new DateTime(2015,01,12)),
(6, "Emma", 200, (int?)8000, new DateTime(2014,03,08)),
(7, "Jacob", 200, (int?)8000, new DateTime(2014,09,02)),
(8, "Olivia", 200, (int?)8000, new DateTime(2013,12,11)),
(9, "Mason", 300, (int?)50000, new DateTime(2016,01,01)),
(10, "Ava", 400, (int?)15000, new DateTime(2014,09,14))
) AS T(EmpID, EmpName, DeptID, Salary, StartDate);
@departments =
SELECT * FROM
(VALUES
(100, "Engineering"),
(200, "HR"),
(300, "Executive"),
(400, "Marketing"),
(500, "Sales"),
(600, "Clerical"),
(800, "Reserved")
) AS T(DeptID, DeptName);
/* T-SQL; Using a subquery with IN
SELECT *
FROM @employees
WHERE DeptID IN
(SELECT DeptID FROM @departments WHERE DeptName IN ('Engineering', 'Executive'));
*/
// U-SQL; Using SEMIJOIN
@result =
SELECT *
FROM @employees AS e
LEFT SEMIJOIN (SELECT DeptID FROM @departments WHERE DeptName IN ("Engineering", "Executive")) AS sc
ON e.DeptID == sc.DeptID;
OUTPUT @result
TO "/Output/ReferenceGuide/Joins/SemiJoins/SubqueryIN.txt"
USING Outputters.Tsv(outputHeader: true);
/* T-SQL; Using a subquery with NOT IN
SELECT *
FROM @employees
WHERE DeptID NOT IN
(SELECT DeptID FROM @departments WHERE DeptName IN ('Engineering', 'Executive'));
*/
// U-SQL; Using ANTISEMIJOIN
@result =
SELECT *
FROM @employees AS e
LEFT ANTISEMIJOIN (SELECT DeptID FROM @departments WHERE DeptName IN ("Engineering", "Executive")) AS sc
ON e.DeptID == sc.DeptID;
OUTPUT @result
TO "/Output/ReferenceGuide/Joins/AntiSemiJoins/SubqueryNOTIN.txt"
USING Outputters.Tsv(outputHeader: true);
// BONUS: Switch "LEFT" to "RIGHT" in the above examples and observe the results.
相关问题
- 1. SELECT * FROM table WHERE col1 <= col2?
- 2. 这不是当子查询跟随允许=,=,<, <= , >,> =当我使用子查询
- 3. print <<< HTML in php?
- 4. 子查询返回多个值。 !这当子查询遵循=,=,<, <= , >,> =
- 5. 是否有与SQL Server/Oracle WITH关键字等效的Sybase?在查询</p> <pre><code>WITH a AS (SELECT something_horrible FROM somewhere_horrible) SELECT * FROM a </code></pre> <p>当“表”一个可以使用非常方便,很多次:
- 6. 同时</p> <p><code>SELECT * FROM table1 WHERE column1 NOT IN(SELECT column1 FROM table2) </code></p> <p>我使用使用上的所有数据库
- 7. SQL服务器:</p> <pre><code>IF OBJECT_ID('dbo.zestaw_zam_fak') IS NULL CREATE VIEW AS SELECT .... FROM .... UNION SELECT ..... FROM.... UNION SELECT ... FROM ... </code></pre> <p>但我得到一个错误:如果不存在不工作
- 8. SQL Server子查询返回了多个值。这当子查询跟随不允许=,!=,<, <= , >,> =(即使我使用IN子句)
- 9. SQL Server 2008 ::子查询返回多个值。这不是当子查询跟随允许=,!=,<, <= , >,> =
- 10. 从SQL表中提取列使用PHP从我的表</p> <pre><code>$spool = $wpdb->get_results('SELECT * FROM `tablename`'); </code></pre> <p>
- 11. 在LINQ查询中使用Func <>
- 12. 子查询返回的值超过1。这是不允许的,当子查询遵循=,!=,<, <= , >,> =
- 13. 是否有可能做一个“Where <property> in <set>”查询Breeze js
- 14. 子查询返回的值超过1。当子查询遵循=,!=,<, <= , >,> =或当子查询用作
- 15. 我如何使用<option></option><sup></sup>在HTML中
- 16. 使用<<< CON在PHP中
- 17. <noscript> in <head>
- 18. 如何使用jQuery.tmpl在<select>中渲染X <option>?
- 19. 子查询返回了超过1个值。这当子查询跟随不允许=,=,<, <= , >,> =
- 20. 在WHERE子句中使用MAX <Operator
- 21. JPA:</p> <pre><code>select p from Plan as p where p.location = :location order by p.name </code></pre> <p>的问题是,如果有三个计划如下: 苹果 蝙蝠 原子 黄油</p> <p>以下是
- 22. 子查询返回不止一个值,不允许变量是=,=,<, <= , >,> =
- 23. PyQt的:在线</p> <pre><code>list=['Engineer', 'Doctor', 'Lawyer'] select * from Occupations where OccupationName in (list) </code></pre> <p>我已阅读各种职位,但他们:用一个字符串列表作为一个MS SQL查询
- 24. SQL Server子查询返回多个值。这当子查询跟随不允许=,=,<, <= , >,> =
- 25. dynamoDB查询:SELECT * FROM mytable WHERE userId IN myList
- 26. Mysql的使用</p> <pre><code>mysql_query("SELECT COUNT(*) as total FROM track WHERE FROM_UNIXTIME(date,'%Y-%m-%d %h:%m:%s') > NOW() - INTERVAL 1 DAY"); </code></pre> <p>在一个查询
- 27. <%$,<%@,<%=,<%#...这是怎么回事?
- 28. Strip <?xml和<!DOCTYPE from字符串
- 29. MySQL - SELECT WHERE date <X
- 30. 可选<optgroup> in HTML <select>标签
当给出的答案最好是给[一些解释为什么你的答案](http://stackoverflow.com/help/how-to-answer)是一个。 –