我之前问了一个关于从两个表中提取数据的问题,得到了一个完美的答案我之前问了一个关于从两个表中提取数据的问题,并得到了 Ollie Jones 完美的答案
这是新情况 我想通过添加 WHERE 从第一个表中获取某些数据,但现在它失败了,似乎不应该
这个查询在执行这个函数时表现得很好
table 1 table 2
product 1 product 4
product 2 product 2
product 3
product 4
SELECT ifnull( b.number >0, 0 ) purchased
FROM 1androidProducts a
LEFT JOIN (
SELECT count( * ) number, product
FROM 1androidSales
WHERE udid = ''
GROUP BY product
) b
ON a.appTitle = b.product
ORDER BY a.appTitle
LIMIT 0 , 30
产生这个结果
result
0
1
0
1
简而言之 表 1 中的每一项都显示了这一点
如果表 1 项没有出现在表二中则为 0 - 或者 - a 1 如果 table-1-item 确实显示在表 2 中
现在当我添加这一行
SELECT ifnull( b.number >0, 0 ) purchased
FROM 1androidProducts a
WHERE a.accountID = 2 <<---------- I added this line
LEFT JOIN (
SELECT count( * ) number, product
FROM 1androidSales
WHERE udid = ''
AND accountID = 2 <<---------- I added this line
GROUP BY product
) b
ON a.appTitle = b.product
ORDER BY a.appTitle
LIMIT 0 , 30
现在报错
1064 - 您的 SQL 语法有误;检查与您的 MySQL 服务器版本对应的手册,了解在第 4 行的“LEFT JOIN (SELECT count(*) number, product FROM 1androidSales”附近使用的正确语法
我只是想根据 accountID 获取表 1 的子集,以便与第二个表进行比较。
如果我有这个
table 1 table 2
accountid =1 product 1 accountid =2 product 4
accountid =1 product 2 accountid =2 product 2
accountid =1 product 3 accountid =2 product 5
accountid =1 product 4
accountid =2 product 1
accountid =2 product 2
accountid =2 product 3
accountid =2 product 4
accountid =2 product 5
会产生这样的结果
result
0
1
0
1
1
因此结果记录总数与表一中满足accountID值为2的记录数量相匹配
我以为这会是一个简单的改变,但它让我很困惑
谢谢你的时间
最佳答案
我相信你的第一个 where 子句放在错误的位置,把它放在连接之后:
SELECT ifnull( b.number >0, 0 ) purchased
FROM 1androidProducts a
LEFT JOIN (
SELECT count( * ) number, product
FROM 1androidSales
WHERE udid = ''
AND accountID = 2
GROUP BY product
) b
ON a.appTitle = b.product
WHERE a.accountID = 2 --Moved the first where clause
ORDER BY a.appTitle
LIMIT 0 , 30
关于android - 如何修改从两个 mySQL 表结果中提取的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13729427/