【问题标题】:Convert MS SQL Server Query in MYSQL QUERY在 MYSQL QUERY 中转换 MS SQL Server 查询
【发布时间】:2014-01-06 19:03:20
【问题描述】:

我写了一个查询,

SELECT dbo.boat.boatno, dbo.boat.boattype, dbo.staff.staffFirstName, dbo.staff.staffLastName,    
dbo.branch.branchAddress
FROM dbo.boat INNER JOIN
dbo.BoatOwner ON dbo.boat.OwnerNo = dbo.BoatOwner.OwnerNo INNER JOIN
dbo.branch ON dbo.boat.BranchNo = dbo.branch.branchno INNER JOIN
dbo.staff ON dbo.branch.branchno = dbo.staff.Branchno
WHERE (dbo.branch.branchAddress LIKE '%LONDON%')

但它在 MYSQL QUERY 中不起作用

如何将其转换为 MYSQL QUERY?

【问题讨论】:

  • #1142 - 表 'boat' 的用户 ''@'localhost' 拒绝 SELECT 命令
  • 您的用户似乎需要 SELECT 权限,在本例中为“@localhot”。

标签: mysql sql sql-server database


【解决方案1】:

您需要知道 MySQL 的正确表名。假设类似的结构,我可能会尝试:

SELECT b.boatno, b.boattype, s.staffFirstName, s.staffLastName, br.branchAddress
FROM boat b INNER JOIN
     BoatOwner bo
     ON b.OwnerNo = bo.OwnerNo INNER JOIN
     branch br
     ON b.BranchNo = br.branchno INNER JOIN
     staff s
     ON br.branchno = s.Branchno
WHERE br.branchAddress LIKE '%LONDON%';

MySQL 不使用 SQL Server 使用的三部分命名。名称中间没有“模式”。列名中的附加句点可能是造成混淆的原因之一。使用表别名应该可以在两个数据库中使用,并使代码更具可读性。

【讨论】:

  • 代码有效,但它列出了同一条船没有 11 次?即使 BoatNo 是唯一的(PK)
  • @user2164535 。 . .正如我在回答中所说,我认为这并不是您真正想要的查询。您是否提出了另一个问题来更好地描述您正在尝试做的事情?
【解决方案2】:

只是一般原则的猜测,但也许更简单

SELECT A.boatno, A.boattype, D.staffFirstName, D.staffLastName, C.branchAddress
FROM dbo.boat A, dbo.BoatOwner B, dbo.branch C, dbo.staff D
WHERE B.OwnerNo = A.OwnerNo AND C.branchno = A.BranchNo AND D.Branchno = C.branchno
AND C.branchAddress LIKE '%LONDON%'

可能会起作用。

首先,请确保您可以使用 PHPmyAdmin 环境从 dbo.boatdbo.BoatOwnerdbo.branchdbo.staff 中进行 SELECT。有时简单的事情会让我们失望......

【讨论】:

  • 代码有效,但它列出了同一条船没有 11 次?即使 BoatNo 是唯一的(PK)
  • 初始查询中没有 GROUP BY 语句,所以是的,您可以获得多行,唯一/主键重复。
【解决方案3】:
SELECT b.boatno, b.boattype, s.staffFirstName, s.staffLastName, br.branchAddress
FROM boat b INNER JOIN
 BoatOwner bo
 ON b.OwnerNo = bo.OwnerNo INNER JOIN
 branch br
 ON b.BranchNo = br.branchno INNER JOIN
 staff s
 ON br.branchno = s.Branchno
WHERE br.branchAddress LIKE '%LONDON%';
GROUP BY b.boatno

这还不够吗?

【讨论】:

    猜你喜欢
    • 2019-12-07
    • 2014-01-10
    • 2013-12-18
    • 1970-01-01
    • 2020-12-04
    • 1970-01-01
    • 1970-01-01
    • 2019-11-23
    • 1970-01-01
    相关资源
    最近更新 更多