【发布时间】:2013-12-11 20:05:10
【问题描述】:
所以这是一个 MySQL 查询:
SELECT TestSite . * , LoggedCarts . *
FROM TestSite, LoggedCarts
WHERE TestSite.email = 'LoggedCarts.Bill-Email'
LIMIT 0 , 30
它返回一个空的结果集,当它应该根据下表返回四个结果时。
第一个表:LoggedCarts - 列:Bill-Email
casedilla@hotmail.com
crazyandy@theholeintheground.com
第二个表:TestSite - 列:电子邮件
samuel@lipsum.com
taco@flavoredkisses.com
honeybadger@dontcare.com
casedilla@hotmail.com
messingwith@sasquatch.com
目标是获取一个 MySQL 语句,该语句返回 Table: TestSite 中与 Table: LoggedCarts 中的行不匹配的行。
注意:我知道在构造查询时在列名中使用连字符需要特别小心,包括使用反引号来告诉 MySQL 有特殊字符。我会更改列名以匹配,但是表:LoggedCarts 有数据通过雅虎购物车的帖子提供,并且在插入之前没有大量准备,将名称设置为除了帖子数据中发送的键之外的任何内容都令人生畏。
但是,如果事实证明在插入之前重建数据比使用 JOIN 语句更容易,或者由于某种原因使用两个具有不同名称的列作为比较列不起作用,我将通过并重建数据库和 PHP 代码。
【问题讨论】:
-
“LoggedCarts.Bill-Email”应该是一个字符串吗?
-
你可能已经回答了你自己的问题
...special care when constructing a query, involving反引号to tell MySQL there are special characters. -
请停止使用 SQL Server 标记 MySQL 问题。
-
删除了额外的类别标签。列标识符周围的反引号导致未知列错误,而撇号导致发生连接,但所有 LoggedCart 表值均为 NULL。
-
FROM TestSite, LoggedCarts不是“完全连接”(这与“完全外部连接”相同——MySQL 无法做到)——它是一个交叉连接。
标签: mysql