gpt4 book ai didi

mysql - 如何使用 like/or like 的左外连接

转载 作者:太空宇宙 更新时间:2023-11-03 12:35:10 25 4
gpt4 key购买 nike

我正在创建一个搜索功能。我的 sql 查询使用 LIKEOR LIKE在 where 子句中。我正在搜索的表中的字段之一称为 quantity_types它只存储与在另一个表中找到的值相对应的代码。所以要从另一个检索值,我想使用 Left Outer Join在我的查询中。

这是我的示例代码:

SELECT * FROM `pharmacy_items`
LEFT OUTER JOIN pharmacy_quantity_types
ON pharmacy_items.quantity_type = pharmacy_quantity_types.id
AND 'pharmacy_items.name' LIKE '%query_here%'
OR 'pharmacy_items.description' LIKE '%query_here%'

此查询返回我的 pharmacy_items 中的所有记录表而不是那些应该返回的记录我没有使用 LEFT OUTER JOIN .

我将如何构建我的查询,以便返回的结果首先满足 WHERE LEFT OUTER JOIN 之前的子句

最佳答案

听起来你想要这个:

SELECT *
FROM pharmacy_items
LEFT
OUTER
JOIN pharmacy_quantity_types
ON pharmacy_items.quantity_type = pharmacy_quantity_types.id
WHERE pharmacy_items.name LIKE '%query_here%'
OR pharmacy_items.description LIKE '%query_here%'

限制pharmacy_items的地方记录在 WHERE 中子句而不是 LEFT OUTER JOINON条款。

(另请注意:

  • AND优先级高于 OR , 所以 a AND b OR C表示 (a AND b) OR c ,而我认为你想要 a AND (b OR C) .上面的查询通过移动 b OR c 隐式修复了这个问题进入 WHERE子句,所以它与 a 分开无论如何。
  • '...'是文字串,所以 'pharmacy_items.name'表示“实际字符串 pharmacy_items.name ”,与“name 记录的 pharmacy_items 字段”不同。后者写成pharmacy_items.name`pharmacy_items`.`name` .)

)

关于mysql - 如何使用 like/or like 的左外连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13548132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com