【发布时间】:2012-12-20 09:28:34
【问题描述】:
这里是 MySQL:
SELECT a.id,
a.name,
a.n,
a.r,
a.pot,
a.ticket_price,
a.starting_tickets,
a.started,
a.end,
COUNT(b.id) tickets_bought
FROM current_lotteries a
JOIN lottery_tickets b ON b.lid=a.id
WHERE a.cid=1
ORDER BY started DESC LIMIT 1
在搜索中,如果a 中没有行,但b 中有行(即COUNT(b.id) 不是NULL),则此查询返回NULL 值为a 的行字段以及 COUNT(b.id) 的任何值作为 tickets_bought。如果表 a 中没有结果,如何修改此查询使其不返回行 (num_rows = 0)?
一个快照。
【问题讨论】:
-
不,
tickets_bought是别名。 -
“此查询返回一行,
a字段为 NULL 值”我不同意,除非a本身可以包含 NULL 值。 -
这真的是您使用的查询吗?您描述的行为不是
INNER JOIN的行为,而是RIGHT JOIN的行为 -
我检查了表结构,
NULL下的每一列都有no。但是当我运行上述查询时,它会为每个字段返回NULL。 -
等等,我想我明白了 - 没有 GROUP BY,而且 MySQL 经常将自己与聚合混淆。
标签: mysql select join group-by