SQL:在不知道所有列名的情况下,从一个联接表中选择所有值?

9

你好,我想知道在MySQL中是否有可能实现以下功能:有一个简单的查询,连接两个表:

SELECT * FROM `contact_attending_appointment` AS tcon,`contact` AS tget WHERE tcon.appointment_id = 2 AND tget.id = tcon.contact_id;

这个查询将会返回tcon和tget表的值连接在一起,但是我只想保留一个表的列。
基本上,在SQL中你可以像这样实现:
SELECT col_1,col_2,...,col_n FROM ...

或者,您可以使用以下代码获取所有列:

SELECT * FROM ...

然而我希望有类似这样的东西(因为我不知道tget的列名)

SELECT [* from tget] FROM ...

有没有一般的解决方案或者这是不可能的?
2个回答

24
SELECT tget.* FROM contact AS tget ...

谢谢您让我复习了我的基本 SQL 技能,我希望它是那么简单 :-) - Blackbam
欢迎您。同时像@Gordon所说的那样使用JOIN ON子句。 - Rafa Paez

1
这个问题已经被Rafa回答过了。但是你似乎正在学习SQL。以下是更好的编写查询语句的方式:
SELECT c.*
FROM `contact_attending_appointment` caa INNER JOIN
     `contact` c
     ON c.id = caa.contact_id 
WHERE caa.appointment_id = 2;

重要的更改如下:
  1. 使用正确的 ANSI 连接语法,将条件放在 on 子句中而不是 where 子句中。
  2. 使用表别名作为表名的缩写。查看查询语句的人(包括您两个月后)将更容易理解其逻辑。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接