东风谷早苗Kochiya Sanae23 2024-04-10 17:11 采纳率: 50%
浏览 5

请问SQLServer适配的交、并、差集合查询代码如何修改使其适配MySQL?

这是我们数据库课的第二个实验,这些代码是适配SQL Server的代码,而我用的是MySQL,嘎嘎报错,请问如何修改使其适配MySQL正常运行?
(我找过适配修改教程,但可能是我太笨了,还是跑不起来(悲))


SELECT P.*
FROM Customer C,Orders O,Lineitem L,PartSupp PS,Part P 
WHERE C.custkey=O.custkey AND O.orderkey=L.orderkey AND 
L.suppkey=PS.suppkey AND L.partkey=PS.partkey AND 
PS.partkey=P.partkey AND C.name='张三'
INTERSECT
SELECT P.*
FROM Customer C,Orders O,Lineitem L,PartSupp PS,Part P 
WHERE C.custkey=O.custkey AND O.orderkey=L.orderkey AND 
L.suppkey=PS.suppkey AND L.partkey=PS.partkey AND 
PS.partkey= P.partkey AND C.name='李四'


```sql
SELECT P.*
FROM Customer C,Orders O,Lineitem L,PartSupp PS,Part P 
WHERE C.custkey= O.custkey AND O.orderkey=L.orderkey AND 
L.suppkey=PS.suppkey AND L.partkey=PS.partkey AND 
PS.partkey=P.partkey AND C.name='张三'
UNION 
SELECT P.* 
FROM Customer C,Orders O,Lineitem L,PartSupp PS,Part P 
WHERE C.custkey=O.custkey AND O.orderkey=L.orderkey AND
L.suppkey=PS.suppkey AND L.partkey=PS.partkey AND
PS.partkey=P.partkey AND C.name='李四'


SELECT P.*
FROM Customer 
C,Orders O,Lineitem L,PartSupp PS,Part P
WHERE C.custkey=O.custkey AND O.orderkey=L.orderkey AND 
L.suppkey=PS.suppkey AND L.partkey=PS.partkey AND 
PS.partkey= P.partkey AND C.name='张三'
EXCEPT
SELECT P.* 
FROM Customer C,Orders O,Lineitem L,PartSupp PS,Part P
WHERE C.custkey=O.custkey AND O.orderkey=L.orderkey AND 
L.suppkey=PS.suppkey AND L.partkey=PS.partkey AND 
PS.partkey=P.partkey AND C.name='李四';

```

  • 写回答

5条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-10 17:11
    关注

    引自免费微信小程序:皆我百晓生

    非常抱歉给您带来了困扰,为了更好地解答您的问题,我会尽可能详细的解释代码的功能和原理。

    首先,我们需要明确的是,在SQL Server中并没有直接的并集操作符,这是SQL Server 2016及更高版本引入的新特性。在这种情况下,您可以尝试将两个表合并为一个表,并通过连接两个表的主键进行连接。

    在MySQL中,您可以通过UNION操作符来实现这一功能。但是,这个操作符只适用于两个字段列类型相同的数据集。

    以下是您提供的代码示例,但在 MySQL 中您可能需要更改它们的顺序以及表达式中的字段名和顺序。

    1. 首先,如果您想创建一个包含所有订单编号的列表,您可以按照下面的方式执行SQL语句:
    SELECT orderkey FROM Orders;
    
    1. 然后,您可以使用UNION操作符将上述结果与名为 Customer 的表的结果合并。在合并过程中,确保客户ID字段名一致。
    SELECT OrderKey, CustomerName, CustomerCity, CustomerState, CustomerZipCode FROM Orders
    UNION ALL
    SELECT OrderKey, Name, City, State, ZipCode FROM Customers
    
    1. 最后,您可以使用ORDER BY子句对合并后的数据按OrderKey排序。
    SELECT *
    FROM (
        SELECT OrderKey, CustomerName, CustomerCity, CustomerState, CustomerZipCode FROM Orders
        UNION ALL
        SELECT OrderKey, Name, City, State, ZipCode FROM Customers
    ) AS combined_orders
    ORDER BY OrderKey;
    

    请注意,这里只是一个基本示例,实际应用中可能需要根据您的具体需求进行调整。如果您需要更深入的帮助,建议您查阅相关的MySQL教程或咨询专业的数据库管理员。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月10日

悬赏问题

  • ¥15 VESTA绘图原子颜色显示异常
  • ¥15 天翼云搭建多ip l2tp
  • ¥30 matlab求解刃位错方程
  • ¥15 python实现CAD识图
  • ¥15 如何实现在renpy中创建并应用不同大小尺寸对话框?
  • ¥15 table表格有一列是固定列 滑动到最下面时 固定的那一列有几行没显示出来
  • ¥20 单细胞数据注释时报错
  • ¥15 vscode编译ros找不到头文件,cmake.list文件出问题,如何解决?(语言-c++|操作系统-linux)
  • ¥15 通过AT指令控制esp8266发送信息
  • ¥15 有哪些AI工具提供可以通过代码上传EXCEL文件的API接口,并反馈分析结果