如何仅显示唯一行并从显示列中删除

时间:2016-11-24 09:50:50

标签: mysql sql

是否可以,如何在列abc中只保留唯一值,是否可以不显示列id1? 我的问题是

3

结果如下:

SELECT
      br.id,LEFT( br.abc,3),
      d.id
FROM
     test br
LEFT  JOIN i_test2 d ON d.id LIKE concat(br.abc, '%')
WHERE
     d.id NOT LIKE '%0' AND d.id NOT LIKE '%9'

我试图通过添加

来解决
id   abc   id1
1    C18   C181
2    C18   C182
3    D50   D504
4    D50   D506
5    D10   D106
6    D10   D107

最后,结果应如下所示:

GROUP BY br.abc
HAVING COUNT(*) > 1 (also i tried with HAVING COUNT(br.abc) but id didn't work)

目的是,我希望显示表 test 中的值,这些值不能引用表test2中以0或9结尾的值,因为它不存在。结果我想看到唯一的价值。

2 个答案:

答案 0 :(得分:3)

你可以做这样的事情;

SELECT
      MIN(br.id) id,
     LEFT(br.abc,3) abc
FROM
     test br
LEFT  JOIN i_test2 d ON d.id LIKE concat(br.abc, '%')
WHERE
     d.id NOT LIKE '%0' 
     AND d.id NOT LIKE '%9'
GROUP BY LEFT(br.abc,3)

它会根据该行的ID为您提供第一次出现“abc”列。

答案 1 :(得分:1)

如果您只想要唯一的abc值,请尝试使用DISTINCT,如果您不想要第三列,则不要选择它。下面的答案没有显示任何ID值,但是再次选择显示哪一个的逻辑不清楚。

SELECT DISTINCT LEFT(br.abc,3) AS abc
FROM test br
LEFT JOIN i_test2 d
    ON d.id LIKE CONCAT(br.abc, '%')
WHERE d.id NOT LIKE '%0' AND
      d.id NOT LIKE '%9'