1

回到我非常古老的 mysql 技能,我需要以下查询。

我有两张桌子

一个是名为 products 的所有项目的表格,其中包含项目名称、项目编号

二是带有cols item num, date的购买项目表

结果我需要的是这样的

ITEM-----PURCHASED
item1-------0 
item2-------0
item3-------0
item4-------1  This item purchased
item5-------0
item6-------1  This item purchased
item7-------0
item8-------0
.
.
.
itemX-------0

输出包含所有项目,如果项目存在于购买的项目表中,则在购买的列中为 1,如果尚未购买,则为 0。

很抱歉,如果这很容易,我的大脑目前处于崩溃模式,我需要这样的东西已经很长时间了

4

1 回答 1

4

使用 aLEFT JOIN和 a在连接表中CASE进行测试NULL,您可以相应地返回零或 1(我使用过CASE,但您也可以IFNULL()在 MySQL 中这样做):

SELECT
  products.name, 
  products.item_num
  /* items that have no related rows in `purchased` will be NULL */
  CASE WHEN purchased.item_num IS NULL then 0 ELSE 1 END AS purchased
  /* Could also just do:
       (purchesd.item_num IS NULL) AS purchased
     because MySQL will return a 0 or 1 from the boolean condition, 
     but the CASE is more portable */
FROM 
  products
  LEFT JOIN purchased ON products.item_num = purchased.item_num
于 2012-11-04T21:45:44.110 回答