涉及交叉连接,唯一性等的MySQL查询

时间:2010-02-02 01:07:32

标签: sql mysql join

值得庆幸的是,我之前不必使用特别复杂的SQL查询。这是我的目标。

我有表hams,我希望与表格eggs交叉加入 - 也就是说,在一定程度上获取所有的ham-egg组合。

eggs表还有一个属性how_cooked,定义为ENUM('over-easy','scrambled','poached')我想要一个结果集列出火腿和鸡蛋烹饪方法的每种可能组合,以及那样煮熟的样品鸡蛋。(我不关心哪个鸡蛋特别。)

因此,如果每个烹饪方法中有3个,每个烹饪方法有1个鸡蛋,3个鸡蛋和3个鸡蛋的3个火腿,我的结果集应该是这样的:

id

我确信我可以在这里和那里一起破解大量子查询的解决方案,但有没有优雅的方法来做到这一点?

2 个答案:

答案 0 :(得分:2)

通过一点点思考真实的努力和谷歌搜索,我可能找到了一个很好的解决方案:

SELECT * FROM hams, eggs GROUP BY hams.id, eggs.how_cooked

似乎有效。真的那么容易吗?

答案 1 :(得分:1)

SELECT hams.id, eggs.how_cooked, eggs.id
FROM hams
  CROSS JOIN eggs

这就是诀窍。 CROSS JOIN,同义,但在MySQL中具有更高的优先级。

MySQL 5.0 Reference - JOIN syntax