回到我以前的mysql技能,我需要以下查询。
我有两张桌子
一个是包含名为products的所有项的表,其中cols item name,item num
二是一张购买物品的表格,上面有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

如果项目存在于购买项目表中,则输出包含所有项目和购买的COL中的1。
如果尚未购买,则返回0。
很抱歉,如果这很简单的话,我的大脑现在处于崩溃状态,我已经很长时间需要这样的东西了

最佳答案

使用aLEFT JOIN和aCASE测试联接表中的NULL,您可以相应地返回0或1(我使用了CASE,但您也可以在MySQL中执行IFNULL()):

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

07-24 22:24