我有三个表,我想从表 1 中选择 DISTINCT * 并从表 2 中选择 cat,其中 vid 在表 3 中可用。
表1
id fname area price
1 ABC Mall R 1500
2 ABd Mall a 1400
3 ABe Mall f 1200
4 ABt Mall b 1000
表2
id catid cat
1 2 xy
2 2 yz
3 1 yxx
4 4 ytt
5 3 xy
表 3
id vid
1 2
2 1
3 4
到目前为止我尝试过的是
SELECT * FROM Table1,Table2,Table3
WHERE
Table1.id=Table2.catid AND
Table1.id=Table3.vid;
我得到的输出
id fname area price cat
1 ABC Mall R 1500 yxx
2 ABd Mall a 1400 xy
2 ABd Mall a 1400 yz
4 ABt Mall b 1000 ytt
期望的输出
id fname area price cat
1 ABC Mall R 1500 yxx
2 ABd Mall a 1400 xy
4 ABt Mall b 1000 ytt
我只想选择 ID 2 的详细信息一次,无论它从表 2“xy 还是 yz”中获取 cat。
谢谢....
最佳答案
现在使用现代的显式 JOIN
语法和表别名。
子查询只返回每个 catid 的最大 cat 值。
SELECT t1.id, t1.fname, t1.area, t1.price, t2.cat
FROM Table1 t1
JOIN (select catid, max(cat) cat from Table2 group by catid) t2 ON t1.id = t2.catid
JOIN Table3 t3 ON t1.id = t3.vid
我不明白为什么要在查询中包含 Table3。您可能可以删除最后一个 JOIN 并仍然获得预期的结果。
关于MySql-从三个表中选择不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41550713/