[英]My SQL query to fetch unique records
我的表名称是菜单列表,如下所示。
Health_interest_id menu_id
------------------- -------
4 4
4 10
5 10
2 4
2 10
2 15
2 16
1 4
现在,我只想得到结果,如果以前没有得到同样的结果。
例如,在第一行中,我们可以看到health_id = 4,menu_id = 4。 所以那行应该被拿走,
然后在第二行中,我们可以看到health_id = 4,它已经在上一行中存在,因此跳过该行,
与第三行相同,menu_id = 10(在上面的内容中可用),因此跳过该行,然后继续所有行。 表示如果结果之前跳过。
嗯。 如果只需要两列中的不同值,则可以执行以下操作:
select Health_interest_id as menu_id from menulist
union
select menu_id from menulist;
这样可以完成您想要的吗?
您确实真的应该将这种逻辑从数据库引擎中移出,因为它并非旨在进行上下文感知的选择。 您正在打破关系数据的概念。 话虽这么说,但这是一个解决方案,任何人都不会出于任何原因使用它。 我应该被解雇,并取消学位,并仅出于编写目的而禁止其stackoverflow。 但我认为看它很有趣。 你不敢使用它;)。
SELECT Health_interest_id, menu_id from
(
SELECT
t2.*,
@s:=CASE WHEN @t <> "" AND @u <> "" THEN CONCAT(@s,@t,@u) ELSE @s END,
@t:=CASE WHEN LOCATE(CONCAT("|", Health_interest_id, "|"),@s) = 0 THEN CONCAT(Health_interest_id, "|") else "" END as AisNew,
@u:=CASE WHEN LOCATE(CONCAT("|", menu_id, "|"),@s) = 0 THEN CONCAT(menu_id, "|") else "" END as BisNew
FROM
Temp.t2 as t2,
( Select @s:="|" ) as s,
( Select @t:="" ) as t,
( Select @u:="" ) as u
) AS INNER_TAB
WHERE AisNew <> "" And BisNew <> "";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.