繁体   English   中英

sql从单个表单输入中查询多个字段

[英]sql query multiple fields from a single form input

我正在使用php / mysql和jQuery ui自动填充。 我需要帮助的是从单个输入(芝加哥,il)中查询数据库的两个字段(城市,州)。 给我的是如何组合查询中的字段。

有效的例子

SELECT City, State, MIN(Zip) AS Min_ZIP, MAX(Zip) AS Max_ZIP
FROM Zips
WHERE City = $foo // 'chicago'
OR Zip = $foo // '01234'
GROUP BY City, State
ORDER BY State;

我想做什么,但没有用

SELECT City, State, MIN(Zip) AS Min_ZIP, MAX(Zip) AS Max_ZIP
FROM Zips
WHERE City = $foo // 'chicago'
OR
City+', '+State = $foo // 'chicago, il'
OR Zip = $foo // '01234'
GROUP BY City, State
ORDER BY State;

(顺便说一句-状态字段是缩写。)

原因是某些城市名​​称只有3个或4个字母,并且包含在其他城市名称中,因此用户可能需要输入逗号和州名才能看到自动提示弹出窗口。

我在数据库上尝试使用CONCAT_WS ,但效果很好,以下查询对您来说应该可以使用。

CONCAT_WS的语法在这里 :第一个参数是用于连接字符串的分隔符,这是其他参数

SELECT City, State, MIN(Zip) AS Min_ZIP, MAX(Zip) AS Max_ZIP
FROM Zips
WHERE City = $foo // 'chicago'
OR
CONCAT_WS(', ',City, State) = $foo // 'chicago, il'
OR Zip = $foo // '01234'
GROUP BY City, State
ORDER BY State;

在运行查询之前,请分割输入字符串,以便执行以下操作:

SELECT City, State, MIN(Zip) AS Min_ZIP, MAX(Zip) AS Max_ZIP
FROM Zips
WHERE City = 'chicago'
OR Zip = '01234'
GROUP BY City, State
ORDER BY State;

如果他们还指定了芝加哥,则该州将变得无关紧要。

你可以试试


SELECT City, State, MIN(Zip) AS Min_ZIP, MAX(Zip) AS Max_ZIP
FROM Zips
WHERE City = 'chicago'
OR( City LIKE "chicago,%" AND State LIKE '%illinois')

OR Zip = '01234'
GROUP BY City, State
ORDER BY State;

我建议将您的字符串连接用括号括起来。 您还可以在MySQL中使用类似CONCAT()或CONCAT_WS()的函数。

您所说的“无效”是什么意思? 子句中断或...?

SELECT City, State, MIN(Zip) AS Min_ZIP, MAX(Zip) AS Max_ZIP
FROM
   (SELECT City, State, Zip, (City +', ' + State) AS CityState
    FROM Zips) as SQ
WHERE City = $foo // 'chicago'
OR
CityState = $foo // 'chicago, il'
OR Zip = $foo // '01234'
GROUP BY City, State
ORDER BY State;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM