mysql - 如何在where条件下多次使用相同的列
问题描述
如何在 where 条件下多次使用相同的列。我想多次使用“meta_key”和“meta_value”。但不幸的是,它不起作用。
我使用了左连接语句,但是没有用。
SELECT * FROM `products` d
JOIN (select distinct product_id from products
WHERE (meta_key="product_image" AND meta_value!="")
AND
(meta_key="product_type" AND meta_value="Soap" )
And
user_id='6' LIMIT 10) t on d.product_id = t.product_id
空结果。
解决方案
如果您想获得同时拥有这两个密钥的产品,
SELECT p.*
FROM products p join
(SELECT product_id
FROM cs_inventory
WHERE ((meta_key = 'product_image' AND meta_value <> '') OR
(meta_key = 'product_type' AND meta_value= 'Soap' )
) AND
user_id = 6
GROUP BY product_id
HAVING COUNT(*) = 2
LIMIT 10
) i
ON p.product_id = i.product_id;
一行不能有单个列的多个值,因此您的子查询将永远不会返回任何值。
相反,它使用OR
并检查这两行是否可用于产品。
推荐阅读
- youtube-api - 我如何添加缩略图 youtube 直播
- python - 网络摄像头条码阅读器:将多个条码数据导出到记事本
- reactjs - React UseEffect setState 不会重新渲染
- delphi - Delphi TcxGrid 正确拆分列中的行
- eloquent - 在 laravel-eloquent 中检索嵌套数据
- visual-studio - Deduce dataypes from table with only nvarchar fields?
- python - Pandas 填充 DataFrame 以填充边界
- terraform - 在应用调用之间存储 tfstate
- arrays - 如何在 Google 表格中创建占位符数组?
- python - 想加入三个模型并获得API输出