-1

我有2个表如下:

1.产品

product_id, name
    1       Books A
    2       Books B
    3       Books C
    4       Books D
    5       Books E

2.liked_items

user_id, product_id
   1         4
   1         3
   1         1

我想查询(sql)以检索结果,如下所示。我可以在同一个查询中执行吗?

product_id,  user_id
1              1
2              0
3              1
4              1
5              0

你好,这是我第一次在这里发帖。希望任何人都可以帮助我。谢谢

4

4 回答 4

0

试试这个,

SELECT  a.product_ID,
        COALESCE(b.user_id,0) `user_id`
FROM    products a 
        LEFT JOIN liked_items b
            ON a.product_ID = b.product_ID

有时liked_items.user_id可能是NULL这样,而不是显示NULL在结果列表中,而是可以使用COALESCE. COALESCE是一个可以将NULLvalue 更改为您想要的 value的函数。

点击演示

于 2012-09-14T01:06:43.017 回答
0
SELECT
  Products.product_id AS product_id,
  IFNULL(liked_items.user_id,0) AS user_id
FROM Products
  LEFT JOIN liked_items ON liked_items.product_id=Products.product_id
于 2012-09-14T01:14:14.320 回答
0
SELECT Products.product_id,liked_items.product_id,liked_items.user_id 
FROM Products 
     LEFT JOIN liked_items 
     ON Products.product_id=liked_items.product_id
于 2012-09-14T01:25:09.837 回答
-1

如果您使用的是 MS SQL Server,您可以像这样使用 IsNull:

SELECT p.product_id, IsNull(li.user_id, 0)
FROM products p 
LEFT JOIN liked_items li 
   ON (p.product_id = li.product_id);

如果没有,Joao 或 John 的回答会很好。

于 2012-09-14T01:12:38.927 回答