我正在尝试从第一个表中获得第二个表。我正在按一些数据进行分组,并且只想显示重复的值一次。
Aircode FlightNumber Locator Title
A01 F01 A Miss
A01 F01 A Mr
A01 F01 B Miss
A01 F01 B Miss
A01 F02 A Mr
A01 F02 A Mr
A01 F02 C Mr
A02 F01 A Mr
Aircode FlightNumber Locator Title
A01 F01 A Miss
Mr
B Miss
Miss
F02 A Mr
Mr
C Mr
A02 F01 A Mr
我无法为此搜索合适的结果。不确定MySQL中是否有任何问题。
我找到了MSSQL的链接,但我不想让查询复杂化。该问题的链接是Display the record in column for grouping only once
这是一个相关的问题。
有可能做到这一点吗?
欢迎任何建议。
答案 0 :(得分:1)
当新行具有旧值以创建第二个表时,您可以使用字段名称中的变量返回null
:
SET @aircode_var = '' , @flight_var='' , @locator_var='' ;
SELECT if(@aircode_var=Aircode, null,@aircode_var:=Aircode),
if(@flight_var=FlightNumber , null ,@flight_var:=FlightNumber ),
if(@locator_var=Locator , null ,@locator_var:=Locator ),
Title
FROM tablename
group by Aircode , FlightNumber , Locator
结果必须如下所示:
A01 F01 A Miss
null null null Mr
null null B Miss
....
注意::=
为变量分配新值,而=
对IF
来说是合乎逻辑的。
(*)在第一行中使用新的SET
命令更新了查询,因为多个正在运行的查询和错过的结果存在错误。