gpt4 book ai didi

mysql - 按顺序匹配数据

转载 作者:行者123 更新时间:2023-11-30 22:37:45 25 4
gpt4 key购买 nike

我正在尝试根据用户搜索从多个表中获取数据。但它不符合我的要求。

我要从中获取记录的表:

  1. 街道
  2. 城市
  3. 国家

假设用户输入'a',然后我想先从街道表中搜索,然后我想在城市表中查找,最后我想在州表中查找。

尝试过:

我正在使用这个查询来获取记录:

SELECT streetObj.street_id AS street_id, CONCAT( streetObj.name,  ' ,    ', cityObj.name,  ' , ', stateObj.name ) namet 
FROM street streetObj
LEFT JOIN city cityObj ON streetObj.city_id = cityObj.city_id
LEFT JOIN state stateObj ON stateObj.state_id = cityObj.state_id
WHERE (
streetObj.name LIKE 'a%'
OR cityObj.name LIKE 'a%'
OR stateObj.name LIKE 'a%'
)
LIMIT 10

但是这个查询首先从 state 表中搜索,然后从 city 表中搜索,最后从 street 表中搜索。

如何更改在表格中查找的顺序?

解释:

街道:

Ram darbar
chawala street
palam street

城市:

 Kota
Ahemdabad
Jaipur

状态:

 Rajasthan
Chennai
Gujrat

所以我想在用户输入“R”或“r”时看到这样的结果:

Ram darbar,Jaipur,Rajasthan

但是我的查询给我这样的结果:

palam street,Jaipur,Rajasthan

这也没有意义。

最佳答案

您可能希望将条件从 WHERE 移动到 JOIN ON 子句,如

SELECT streetObj.street_id AS street_id,
CONCAT(streetObj.name, ' , ', cityObj.name, ' , ', stateObj.name ) namet
FROM street streetObj
LEFT JOIN city cityObj ON streetObj.city_id = cityObj.city_id
LEFT JOIN state stateObj ON stateObj.state_id = cityObj.state_id
WHERE streetObj.name LIKE 'a%';

根据您最近在帖子中的编辑,您实际上不需要以下条件,应该只在 street 表中搜索。 JOIN

应该是通过匹配记录获取数据
    OR cityObj.name LIKE  'a%'
OR stateObj.name LIKE 'a%'

关于mysql - 按顺序匹配数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31983780/

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