Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL-如何在选择中隐藏列_Mysql_Sql - Fatal编程技术网

Mysql SQL-如何在选择中隐藏列

Mysql SQL-如何在选择中隐藏列,mysql,sql,Mysql,Sql,我有两张表“合同”和“工人”。我需要找到假期最多的工人。然而,我只需要打印他的名字,而不是假期 SELECT W.Name, MAX(C.Holidays) As Holidays FROM worker AS W, contract AS C WHERE W.Worker_ID = C.Worker_ID 模式 合同: Contract_ID (PK) Worker_ID (FK) holidays Name Holidays Fegelein 31 Name Fegel

我有两张表“合同”和“工人”。我需要找到假期最多的工人。然而,我只需要打印他的名字,而不是假期

SELECT W.Name, MAX(C.Holidays) As Holidays 
FROM worker AS W, contract AS C
WHERE W.Worker_ID = C.Worker_ID
模式
合同:

Contract_ID (PK)
Worker_ID (FK)
holidays
Name    Holidays
Fegelein    31
Name
Fegelein
工人

Worker_ID (PK)
Name
样本数据:
合同

工人

代码
目前,我使用以下代码打印信息:

编辑:以下SQL代码错误!它显示了
Fegelein
,尽管
Klink
是假期最多的人

SELECT W.Name, MAX(C.Holidays) As Holidays 
FROM worker AS W, contract AS C
WHERE W.Worker_ID = C.Worker_ID
结果:

Contract_ID (PK)
Worker_ID (FK)
holidays
Name    Holidays
Fegelein    31
Name
Fegelein
所需结果:

Contract_ID (PK)
Worker_ID (FK)
holidays
Name    Holidays
Fegelein    31
Name
Fegelein
SQL小提琴

因此,我需要将第二个select
MAX(C.Holidays)隐藏为Holidays
。这可能吗?

切勿在
FROM
子句中使用逗号。始终使用正确、明确的
JOIN
语法。或者,正如我昨天看到的一条评论所暗示的<代码>加入现代世界

如果您只需要一个这样的工人,请使用
限制

SELECT w.Name
FROM worker w JOIN
     contract c
     ON w.Worker_ID = c.Worker_ID
ORDER BY c.Holidays DESC
LIMIT 1;
大多数假日似乎是
假日
的最小值。如果它是最小值(如您的问题所建议的),请使用c.Holidays ASC的订单

据推测,工人可能有多个合同,因此您可能需要聚合。然而,这还不清楚


是个SQL高手。

我认为这应该是你的工作

SELECT W.Name
FROM worker AS W, contract AS C
where W.Worker_ID = C.Worker_ID order by C.Holidays limit 1;
从“选择属性”中删除假日并将其限制为1,orderby Holidays只需尝试以下功能即可完成此任务:

SELECT w.Name
FROM worker w JOIN
     contract c
     ON w.Worker_ID = c.Worker_ID
ORDER BY c.Holidays DESC

如果您只需要一个结果,您可以添加
限制1

编辑您的问题,并提供示例数据和所需结果。@GordonLinoff也许您应该重新阅读该问题,您要求的所有内容都已包含在内。结果:
您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解在第5行“从worker w中选择w.Name加入合同c ON w.worker\u ID=c.worker\u”附近使用的正确语法。
@Black然后您错误地复制了Gordon的查询,或者您向我们显示的架构不准确。@Black。该代码在SQL FIDLE上运行良好。我已经添加了链接。很有效!我的错是,我以前有一些其他SQL语句,但忘记用
关闭一个SQL语句
但逻辑似乎有问题,因为即使
Kling
是假期最多的一个,也会出现
Fegelein
。但是问题解决了,这就是马瑟斯所说的。如果我添加
DESC
,那么
Klink
看起来很简单,我喜欢它!很乐意帮忙。:)