2
SELECT 'nmc_cd.CDID','nmc_cd.CDTitle', 'nmc_cd.CDYear','nmc_cd.pubID','nmc_cd.catID','nmc_cd.CDPrice','nmc_category.catDesc'
From nmc_cd
JOIN nmc_category
ON 'nmc_cd.catID'='nmc_category.catID'
ORDER BY CDTitle

我一直在将此查询放入 mySQL 以尝试从 ncm_CD 和 nmc_category 获取结果的表,但它一直在重新调整没有价值?另外,如果我使用右连接或左连接,它会返回列名(例如 nmc_cd.CDJD)

4

2 回答 2

3

尝试删除引号,以便引用列本身 - 使用引号,您正在使用字符串而不是列。

SELECT nmc_cd.CDID, nmc_cd.CDTitle,  nmc_cd.CDYear, nmc_cd.pubID, nmc_cd.catID, nmc_cd.CDPrice, nmc_category.catDesc
From nmc_cd
JOIN nmc_category
ON nmc_cd.catID = nmc_category.catID
ORDER BY CDTitle

此外,正如@Randy 提到的,确保您确实拥有符合条件的数据:)

于 2012-11-08T16:31:38.057 回答
2

我不知道为什么你在所有东西周围都有单引号,单引号被认为是一个静态字符串值,所以它不会从列中返回数据:

SELECT nmc_cd.CDID,
    nmc_cd.CDTitle, 
    nmc_cd.CDYear,
    nmc_cd.pubID,
    nmc_cd.catID,
    nmc_cd.CDPrice,
    nmc_category.catDesc
From nmc_cd
INNER JOIN nmc_category
    ON nmc_cd.catID=nmc_category.catID
ORDER BY CDTitle

但是对于INNER JOIN您正在使用的,您必须确保您的值与两个表中的数据匹配,如果您不这样做,则不会返回任何数据。如果您在两个表中都没有数据,那么您将需要使用 aLEFT JOINRIGHT JOIN

SELECT nmc_cd.CDID,
    nmc_cd.CDTitle, 
    nmc_cd.CDYear,
    nmc_cd.pubID,
    nmc_cd.catID,
    nmc_cd.CDPrice,
    nmc_category.catDesc
From nmc_cd
LEFT JOIN nmc_category
    ON nmc_cd.catID=nmc_category.catID
ORDER BY CDTitle

MySQL 在列和表名周围使用反引号而不是单引号,如果您应用它们,那么您的查询将如下所示:

SELECT `nmc_cd`.`CDID`,
    `nmc_cd`.`CDTitle`, 
    `nmc_cd`.`CDYear`,
    `nmc_cd`.`pubID`,
    `nmc_cd`.`catID`,
    `nmc_cd`.`CDPrice`,
    `nmc_category`.`catDesc`
From `nmc_cd`
JOIN `nmc_category`
    ON `nmc_cd`.`catID`=`nmc_category`.`catID`
ORDER BY `CDTitle`
于 2012-11-08T16:32:29.160 回答