【问题标题】:Script to insert default values to MANY-TO-MANY relation in SQL Server 2008在 SQL Server 2008 中将默认值插入到 MANY-TO-MANY 关系的脚本
【发布时间】:2013-03-23 08:40:33
【问题描述】:

我正在使用SQL Server 2008。请考虑以下表格:

学生

╔════╦═══════════╦══════════╗
║ ID ║ FIRSTNAME ║ LASTNAME ║
╠════╬═══════════╬══════════╣
║  1 ║ joe       ║ Smith    ║
║  2 ║ frank     ║ Smith    ║
║  3 ║ Scott     ║ Smith    ║
╚════╩═══════════╩══════════╝

课程

╔════╦═════════╦════════════════╗
║ ID ║  NAME   ║  DESCRIPTION   ║
╠════╬═════════╬════════════════╣
║  1 ║ Physics ║ PHYSICS COURSE ║
║  2 ║ MATH    ║ COURSE         ║
╚════╩═════════╩════════════════╝

表格STUDENT_COURSE

╔════════════╦═══════════╦═══════╗
║ STUDENT_ID ║ COURSE_ID ║ GRADE ║
╠════════════╬═══════════╬═══════╣
║          1 ║         1 ║     9 ║
║          2 ║         1 ║     8 ║
║          3 ║         1 ║     6 ║
╚════════════╩═══════════╩═══════╝

如果该用户不存在这样的成绩,我需要为所有用户插入数学课程的默认成绩 10。

我不熟悉 Microsoft SQL Server 和 T-SQL。你能帮我解决这样的问题吗?

【问题讨论】:

  • 微软的产品叫做SQL Server,它的查询语言“方言”是T-SQL(Transact-SQL)

标签: sql sql-server sql-server-2008 join sql-insert


【解决方案1】:
INSERT INTO STUDENT_COURSE (Student_ID, course_ID, grade)
SELECT  a.ID as StudentID, b.ID as Course_ID, 10 AS grade
FROM    Student a 
        CROSS JOIN Course b
        LEFT JOIN 
        (
            SELECT  d.*
            FROM    STUDENT_COURSE d
                    INNER JOIN Course e
                        ON d.Course_ID = e.ID
            WHERE   e.Name = 'Math'
        ) c ON  a.ID = c.student_ID AND
                b.ID = c.course_ID 
WHERE   c.student_ID IS NULL AND 
        b.Name = 'Math'

如果您列出表 STUDENT_COURSE 上的所有记录,则输出

MySQL> SELECT * FROM STUDENT_COURSE

╔════════════╦═══════════╦═══════╗
║ STUDENT_ID ║ COURSE_ID ║ GRADE ║
╠════════════╬═══════════╬═══════╣
║          1 ║         1 ║     9 ║
║          2 ║         1 ║     8 ║
║          3 ║         1 ║     6 ║
║          1 ║         2 ║    10 ║
║          2 ║         2 ║    10 ║
║          3 ║         2 ║    10 ║
╚════════════╩═══════════╩═══════╝

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-16
    • 1970-01-01
    相关资源
    最近更新 更多