下面是一个MySQL查询:
SELECT TestSite . * , LoggedCarts . *
FROM TestSite, LoggedCarts
WHERE TestSite.email = 'LoggedCarts.Bill-Email'
LIMIT 0 , 30它返回一个空的结果集,而它应该根据下表返回四个结果。
第一表: LoggedCarts -列:账单-电子邮件
casedilla@hotmail.com
crazyandy@theholeintheground.com第二表: TestSite -列:电子邮件
samuel@lipsum.com
taco@flavoredkisses.com
honeybadger@dontcare.com
casedilla@hotmail.com
messingwith@sasquatch.com目标是获得一个MySQL语句,该语句返回表: TestSite中与表: LoggedCarts中的行不匹配的行。
注意:我知道在构建查询时,在列名中使用连字符需要特别小心,这涉及回拨以告诉MySQL存在特殊字符。但是,我会更改列名以匹配该表: LoggedCarts通过雅虎购物车通过post提供数据,而且在插入之前无需进行大量准备,只需将post数据中发送的键设置为任何内容都是令人生畏的。
但是,如果在插入之前重建数据比使用JOIN语句容易,或者由于某种原因使用两个名称不同的列(因为比较列不能工作),我将遍历并重新构建数据库和PHP代码。
发布于 2013-12-11 20:47:31
在给出的一些提示的启发下,我找到了我在这里寻找的解决方案:不存在的地方
做我需要它做的事情,另外,我喜欢使用的简写语法,它允许您为表名输入别名,并在整个语句中使用别名。
SELECT *
FROM TestSite e
WHERE NOT EXISTS
(
SELECT null
FROM LoggedCarts d
WHERE d.`Bill-Email` = e.email
)发布于 2013-12-11 20:08:05
单引号表示字符串文字。您需要使用backticks作为标识符。此外,标识符的每个组件都必须单独引用。
SELECT TestSite . * , LoggedCarts . *
FROM TestSite, LoggedCarts
WHERE TestSite.email = LoggedCarts.`Bill-Email`
LIMIT 0 , 30来自手册
如果多部分名称的任何组件需要引用,请单独引用它们,而不是引用整个名称。例如,编写
my-table.my-column,而不是my-table.my-column。
https://stackoverflow.com/questions/20528876
复制相似问题