我有两张桌子
CATEGORY
id category parent_id
1 Electronic
2 Furniture
3 Phone 1
4 LCD 1
5 Watch 1
6 Desk 2
ORDER
id customer product category_id
1 John Smartphone 3
2 Marry Montior 4
3 King Wood-Desk 6
我想通过child_id找到所有电子结果。
喜欢这个..
SELECT product FROM order WHERE category_id = (category.id = 1)
RESULT
product
Smartphone
Monitor
MySQL中是否有这样的表达式?
答案 0 :(得分:0)
您必须使用INNER JOIN
SELECT order.product
FROM order
INNER JOIN category
ON order.category_id = category.id
WHERE category.parent_id = 1
ON关键字显示了这些表之间要比较的列。当您进行JOIN时,您需要将表名放在以“。”分隔的列名之前。因为在两个表中都可以存在一个具有相同名称的列。
答案 1 :(得分:0)
您可以使用join
。您还需要使用反引号封装order
表名,因为order
是保留的(或者您可以重命名该表以避免每次封装)。
SELECT product FROM `order` as o
join category as c
on o.category_id = c.id
WHERE c.parent_id = 1
on
告诉数据库要向join
提供哪些数据。 as
创建别名,因此不需要每次都写出完整的表名。 (as
也是可选的,我发现它更容易阅读,FROM `order` o
会是相同的)
另一种方法可能是使用子查询:
SELECT product
FROM `order`
WHERE category_id in (SELECT id FROM CATEGORY where parent_id = 1)