【问题标题】:mysql get string to left of a character and compare it with another columnmysql获取字符左侧的字符串并将其与另一列进行比较
【发布时间】:2014-01-05 21:10:08
【问题描述】:

我正在运行这个 sql 查询

SELECT DISTINCT  a.user_login, a.user_email, c.domain
FROM wp_users a
JOIN wp_usermeta b ON a.id = b.user_id
JOIN wp_blogs c ON b.meta_value = c.site_id
WHERE meta_key =  'primary_blog' and
ORDER BY  `a`.`ID` ASC 
LIMIT 0 , 100

结果

user_login        user_email                domain
abc               xys@example.com           laskdlasd.com
cdestefano        cdestefano@example.com    kaskdjkasjdkasd
fran              fran@example.com          kasdllasdlasd

我只想要user_login不等于@之前的字符串的行,即从上面的结果我只需要下面的行

abc               xys@example.com           laskdlasd.com

我尝试了下面的代码,但它不起作用

SELECT DISTINCT a.user_login, a.user_email, c.domain
FROM wp_users a
JOIN wp_usermeta b ON a.id = b.user_id
JOIN wp_blogs c ON b.meta_value = c.site_id
WHERE meta_key =  'primary_blog'
AND a.user_login != LEFT( a.user_email, LOCATE(  '@', a.user_email ) ) 
ORDER BY  `a`.`ID` ASC 
LIMIT 0 , 100

如何得到想要的结果?

【问题讨论】:

    标签: mysql string-comparison string-split


    【解决方案1】:

    将此添加到WHERE 子句中,

    AND SUBSTRING(REPLACE(user_email, user_login, ''), 1, 1) <> '@'
    

    【讨论】:

      【解决方案2】:

      试试

      SELECT *
      FROM wp_users a
      JOIN wp_usermeta b ON a.id = b.user_id
      JOIN wp_blogs c ON b.meta_value = c.site_id
      WHERE user_login  != substring_index(user_email,'@',1) 
      

      【讨论】:

        猜你喜欢
        • 2015-04-04
        • 1970-01-01
        • 2021-08-27
        • 2022-06-14
        • 1970-01-01
        • 2019-06-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多