mysql - 按列计算 SQL 出现次数

标签 mysql sql count sql-like

经过一番研究,我还没有找到我需要的东西,我想我会在这里问。我目前正在尝试为应用程序开发高级搜索模式,但我仍坚持我的任务。也许你可以帮助我。想象一下我有下表:

ID | Name    | Surname
1  | John    | Mim
2  | Johnny  | Crazy
3  | Mike    | Something
4  | Milk    | Milk
5  | Peter   | IDontknow
6  | Mitch   | SomeName

然后在我的前端,有一个输入字段。该字段的输入将以这种方式通过查询:

SELECT name, surname FROM people WHERE name LIKE 'input%' OR surname LIKE 'input%'

现在假设我的输入是“Mi”,因此我将在“姓名”列中匹配 3 列,在姓氏中匹配 2 列。这就是我正在寻找的。

输出以下内容的计数:

Column  | Count
Name    | 3
Surname | 2

有没有一种方法可以仅通过一个查询来实现这一目标?

到目前为止我尝试过的:
我实际上在我的数据库中的本地主机上创建了上面的表,并尝试了不同的查询。尝试过 SELECT count(name), count(surname) ,但这两个计数都会输出 3。所以我什至不确定这是否可以仅在一个查询中实现。

最佳答案

使用联合所有

SELECT 'name' as col, count(name) as cnt FROM people WHERE name LIKE 'input%' 
union all
SELECT 'surname', count(surname) FROM people WHERE  surname LIKE 'input%'

关于mysql - 按列计算 SQL 出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56947737/

相关文章:

php - GROUP_CONCAT 创建下拉列表

php - 如何使用 phpmyadmin 导出 MySQL 中的特定列?

mysql - CakePHP 数据库查询计数(案例)

mysql - 是否可以将 cfqueryparams 作为准备好的语句参数发送到 MySQL?

php - 解析 XML 太慢?

sql - 如何避免在 IN 子句中使用多个 IF 语句进行动态查询

sql - 从配置单元连接查询中选择非重复记录

mysql - 在 sql 表中选择不同的行时出现语法错误

mysql - 从两列中查找重复项,但显示所有行 MySQL

mysql - 如何在 MySQL 中按两列比较两个查询?