当前位置: 首页 > 知识库问答 >
问题:

mysql - MySQL 查询语句要怎么写?

卓嘉良
2023-07-11

产品表 t_product 和 产品扩展分类表 t_product_category

t_product 表字段 product_id, category_id, title, seq

t_product_category 表字段 product_id, category_id

一个产品可能有多个扩展分类,现在想要根据category_id来查找产品,如果 t_product 没有,t_product_category有可需要找出来,应该怎么写?

我这样写不可,不知道为什么
SELECT p.* FROM t_product AS p , t_product_category AS pc WHERE ( p.category_id IN ( 1,2 ) OR ( p.product_id = pc.product_id AND pc.category_id IN ( 1,2 ) ) ) GROUP BY p.product_id ORDER BY p.seq ASC, p.product_id DESC LIMIT 0, 20

共有3个答案

昝枫
2023-07-11
SELECT p.*
FROM t_product p
LEFT JOIN t_product_category pc ON p.product_id = pc.product_id
WHERE p.category_id = <category_id>
   OR pc.category_id = <category_id>

首先将 t_product 表与 t_product_category 表关联起来,然后使用 WHERE 语句过滤出满足条件的记录。如果想只返回唯一的一条记录,可以使用 DISTINCT 关键字来去重。

归俊杰
2023-07-11
SELECT p.product_id, p.category_id, p.title, p.seq
FROM t_product p
LEFT JOIN t_product_category c ON p.product_id = c.product_id
WHERE p.category_id = {category_id} OR c.category_id = {category_id};
皇甫飞光
2023-07-11
SELECT p.* 
FROM t_product AS p 
LEFT JOIN t_product_category AS pc ON p.product_id = pc.product_id 
WHERE p.category_id IN (1,2) OR pc.category_id IN (1,2) 
GROUP BY p.product_id 
ORDER BY p.seq ASC, p.product_id DESC 
LIMIT 0, 20
 类似资料:
  • 本文向大家介绍Mysql查询语句优化技巧,包括了Mysql查询语句优化技巧的使用技巧和注意事项,需要的朋友参考一下 索引优化,查询优化,查询缓存,服务器设置优化,操作系统和硬件优化,应用层面优化(web服务器,缓存)等等。这里的记录的优化技巧更适用于开发人员,都是从网络上收集和自己整理的,主要是查询语句上面的优化,其它层面的优化技巧在此不做记录。 查询的开销指标: 执行时间 检查的行数 返回的行数

  • 我使用的是+++。 我得到了4个DELETE,只想要一个数据库请求,所以我用一个“;”连接了DELETE命令...但总是失败。 它会抛出以下错误: 但如果我将此SQL粘贴到PhpMyAdmin中,它总是成功的... 如果我在单个查询中编写它,它也会成功。 多谢帮忙!

  • 本文向大家介绍模糊查询 like 语句该怎么写?相关面试题,主要包含被问及模糊查询 like 语句该怎么写?时的应答技巧和注意事项,需要的朋友参考一下 第 1 种:在 Java 代码中添加 sql 通配符。 第 2 种:在 sql 语句中拼接通配符,会引起 sql 注入

  • 题目描述 MySQL多对多查询,没有中间表 题目来源及自己的思路 a,b两表通过cid连接,但是cid在a,b两表都不唯一。关联查询会产生笛卡尔积. 现要求通过b的条件关联查询a的字段 现在自己设计了一种思路。 相关代码 select a.字段 from a where a.cid in (select b.cid from b where b.id = #{}) 你期待的结果是什么?实际看到的错

  • 问题内容: 我正在尝试在MySQL选择查询中使用一条语句。 我在第一个语句之后出现错误。 为什么这不起作用?在MySQL查询中执行IF语句的正确方法是什么? 问题答案: 您使用的IF / THEN / ELSE构造仅在存储过程和函数中有效。您的查询将需要重组,因为您不能使用IF()函数来控制WHERE子句的流程。 可以在查询中使用的IF()函数主要用于在查询的SELECT部分​​中根据某些条件选择

  • 本文向大家介绍整理MySql常用查询语句(23种),包括了整理MySql常用查询语句(23种)的使用技巧和注意事项,需要的朋友参考一下 废话不多了,直接贴代码了 一查询数值型数据:  查询谓词:>,=,<,<>,!=,!>,!<,=>,=< 二查询字符串 三查询日期型数据  注:不同数据库对日期型数据存在差异: 四查询逻辑型数据  逻辑运算符:and or not 五查询非空数据  注:<>相当于