Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.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
加入时的SQL技巧_Sql_Mysql - Fatal编程技术网

加入时的SQL技巧

加入时的SQL技巧,sql,mysql,Sql,Mysql,我有两张桌子、两个节目和两个对象。我想打印出最新的对象,以及它们的显示名称。现在我是这样做的: SELECT MAX(objects.id) as max_id, shows.name, shows.id FROM shows, objects WHERE shows.id = objects.showId GROUP BY shows.name 但是,如果我还想获取对象的插曲,我不能像SELECT object.插曲[…]那样放置它,因为这样就不会自动选择对象MAX(objects.i

我有两张桌子、两个节目和两个对象。我想打印出最新的对象,以及它们的显示名称。现在我是这样做的:

SELECT MAX(objects.id) as max_id, shows.name, shows.id 
FROM shows, objects 
WHERE shows.id = objects.showId
GROUP BY shows.name 
但是,如果我还想获取对象的插曲,我不能像
SELECT object.插曲[…]
那样放置它,因为这样就不会自动选择对象
MAX(objects.id)
,所以我的问题是如何做

如果你还没有弄清楚我的桌子,它们是这样的:

  • 显示
    • 身份证
    • 名字
而且:

  • 物体
    • 身份证
    • 名字
    • 插曲
    • 时令
    • 肖维德
使用MySQL

SELECT objects.id as max_id, shows.name, shows.id 
FROM shows, objects 
WHERE shows.id = objects.showId
ORDER BY objects.id DESC
GROUP BY shows.name 
LIMIT 1
这能满足您的需要吗?

类似这样的东西(未经测试):


我感觉像这样的东西也会起作用:

SELECT objects.id, objects.episode, shows.name, shows.id 
FROM shows 
JOIN objects AS objects_for_max ON shows.id = objects.showId
JOIN objects ON objects.id=MAX(objects_for_max.id)
GROUP BY shows.name 

这只返回一个对象。OP希望每个名称和相关插曲的最新对象。性能是否有问题?每个表中有多少行?这确实有效!但是WHERE子句应该在ids中。谢谢不是100%确定,但我认为
=
应该和
中的
一样好(这就是你的意思吗?)并且可能更快,因为它向优化者暗示只需要一行。
SELECT objects.id, objects.episode, shows.name, shows.id 
FROM shows 
JOIN objects AS objects_for_max ON shows.id = objects.showId
JOIN objects ON objects.id=MAX(objects_for_max.id)
GROUP BY shows.name