【问题标题】:How to fetch all rows from table if like operator value match using mysql?如果使用mysql的运算符值匹配,如何从表中获取所有行?
【发布时间】:2016-06-15 11:29:59
【问题描述】:

如果 like 运算符值匹配并且为真,我将尝试获取所有记录。

我有桌票。

---------------------------
: id  :  ticket : user_id :
---------------------------
: 1   : 2546    : 2       :
---------------------------
: 2    : 8475    : 2      :
---------------------------

我正在尝试这个查询

SELECT * FROM `ticket` WHERE `ticket` LIKE '%2546%'  

以上查询返回单个结果并且工作正常。但是如果 like 运算符值匹配并且表具有该行 user_id 的更多记录,我需要这两行。我试过分组

SELECT * FROM `ticket` WHERE `ticket` LIKE '%2546%' 
GROUP BY `user_id `

我知道如果使用 user_id = 2 而不是 likeGroup By 运算符可以做到,但我需要按 ticket 列进行过滤。那么这有可能在单个查询中实现这种任务吗?

【问题讨论】:

  • 第一个查询,我的意思是没有 group by 子句的那个肯定会给你所有你喜欢的操作符匹配的行..
  • @TirthrajBarot 是的,它给了我类似运算符匹配值的记录,但如果其他行中存在相同的 user_id,我需要这些记录。
  • SELECT * FROM ticket WHERE ticket LIKE '%5%' 使用这个或 SELECT * FROM ticket WHERE ticket LIKE '%4%' 这不可能检索数据用 '%2546%' 找到这个完整的字符串
  • 请向我们展示您的预期输出。
  • SELECT * FROM ticket GROUP BY user_id ... 这是您要找的吗?

标签: mysql sql sql-like


【解决方案1】:

使用嵌套查询:

SELECT *
FROM ticket t1
WHERE user_id IN (
    SELECT DISTINCT user_id
    FROM ticket t2
    WHERE ticket LIKE '%2456%'
);

【讨论】:

  • OP 可能希望添加 "ORDER BY user_id'" 以确保将特定用户的所有行分组在一起(sql 不保证结果顺序) .
【解决方案2】:

使用自连接作为

SELECT U . * 
FROM  `ticket` t, `ticket` U
WHERE t.`ticket` LIKE  '%2546%'
AND t.`user_id` = U.`user_id` 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-27
    • 2012-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多