MySQL子查询,从一个表中获取ID列表,以查询第二个表
我有两个表,一个是MySQL子查询,从一个表中获取ID列表,以查询第二个表,mysql,subquery,Mysql,Subquery,我有两个表,一个是产品,另一个是销售记录 我正在使用此查询: SELECT DAY(FROM_UNIXTIME(saleDate)) as day, MONTH(FROM_UNIXTIME(saleDate)) as mnth, YEAR(FROM_UNIXTIME(saleDate)) as yr, COUNT(id) as invCount, SUM(quantity) as qty FROM salesRecords WHERE itemNo I
产品
,另一个是销售记录
我正在使用此查询:
SELECT
DAY(FROM_UNIXTIME(saleDate)) as day,
MONTH(FROM_UNIXTIME(saleDate)) as mnth,
YEAR(FROM_UNIXTIME(saleDate)) as yr,
COUNT(id) as invCount, SUM(quantity) as qty
FROM salesRecords WHERE itemNo IN
(SELECT GROUP_CONCAT(convert(id, CHAR(8))) as ids FROM products WHERE brand =100 GROUP by brand)
GROUP BY
mnth, yr
ORDER BY saleDate
products(产品)表包含我需要了解的关于产品的所有信息,salesRecords(销售记录)包含saleDate(销售日期)、销售数量、折扣等详细信息,因此我在这里试图实现的是一个Unix时间字段“saleDate”(销售日期)中的所有品牌id为100
的产品的销售列表
它可以工作,但速度很慢
有人能建议一种更快的方法吗
如果我手动将ID列表插入到查询中,它似乎工作得更快,那么我应该运行两个查询吗?我已经用一个内部联接重写了您的查询。试试看,然后回来看新闻:
SELECT
DAY(FROM_UNIXTIME(saleDate)) as day,
MONTH(FROM_UNIXTIME(saleDate)) as mnth,
YEAR(FROM_UNIXTIME(saleDate)) as yr,
COUNT(id) as invCount,
SUM(quantity) as qty
FROM salesRecords s inner join
products on s.itemNo = p.id
WHERE
p.brand =100
GROUP BY
`day`, mnth, yr
ORDER BY
saleDate
此外,为了避免where子句,您可以在操作中设置限制:
...
SUM(quantity) as qty
FROM salesRecords s inner join
products on p.brand =100 and s.itemNo = p.id
GROUP BY
...
是的,那要快得多。我今天遇到了Wi-Fi问题,但即使使用我的iPhone作为热点通过3G连接运行,数据返回速度也要快得多!:-)我仍然在使用WHERE条款,您关于删除该条款的建议会进一步加快吗?(现在要检查“网络问题”是很棘手的!)