【问题标题】:MySQL SELECT from multiple columns from tablesMySQL SELECT 从表中的多个列
【发布时间】:2013-08-27 08:46:34
【问题描述】:

我正在尝试从 mysql 数据库中检索信息。 我有以下表格:

资格(qualificationid、qualificationname、personid、status)

地址(addressid, addressline1,city,province,areacode,personid)

score(scoreid, score.choices,personid,jobid)

我使用键入以下 mysql 语句来检索数据

SELECT score.personid, qualifications.qualificationname, score.score
FROM
Qualifications, Score, Address
WHERE
score.jobid=58
AND
qualifications.qualificationName ='Human Resource Management'
AND
aadress.province ='Western Cape'
ORDER BY score.score
LIMIT 0,20;

这似乎适用于其他一切,但并不限制该省为西开普省。

【问题讨论】:

  • 省就是这样的“西开普省”?任何机会有空间或其他字符?你可以试试: UPPER(RTRIM(LTRIM(aadress.province))) =UPPER(RTRIM(LTRIM('Western Cape'))) ;或 aadress.province LIKE '%Western Cape%'。希望这会有所帮助
  • 看起来像是错字:address.province 而不是 aadress.province

标签: mysql select multiple-columns multiple-tables


【解决方案1】:

为什么不使用连接?像这样:

SELECT s.personid, q.qualificationname, s.score
  FROM Score s
  INNER JOIN Qualifications q ON q.personid = s.personid AND q.qualificationName ='Human Resource Management'
  INNER JOIN Address a ON a.personid = s.personid AND a.province ='Western Cape'
  WHERE s.jobid = 58
  ORDER BY s.score DESC
  LIMIT 0,20;

【讨论】:

    【解决方案2】:

    您需要定义关系。在您的示例中,系统现在不知道地址与分数或资格的关系。通过添加GROUP BY score.personidAND score.personid = address.personidscore.personid = qualifications.personid,您可能会解决您的问题。

    此外,使用JOINS 可能更有效,因为它的作用基本相同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-10
      • 1970-01-01
      • 2012-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多