【发布时间】:2013-01-28 23:16:45
【问题描述】:
我已经尝试使用标准选择查询的所有现有尝试,方法是嵌套在另一个 SELECT 中,然后使用 ASC,但由于某种原因它无法在我的 JSCharts 中加载。我的代码工作正常,减去顺序:
SELECT `$tableName`.`$patient_idField` , `$tableDataName`.`$patient_idField` , `$tableDataName`.`$resultField` , `$tableName`.`$login_idField`
FROM `$tableName`
JOIN `$tableDataName` ON `$tableName`.`$patient_idField` = `$tableDataName`.`$patient_idField`
COLLATE utf8_general_ci
WHERE `$tableName`.`$login_idField` = $usssName
ORDER BY `$tableDataName`.id DESC LIMIT 10
这是重新排序的尝试,但加载失败:
SELECT * FROM (
SELECT `$tableName`.`$patient_idField` , `$tableDataName`.`$patient_idField` , `$tableDataName`.`$resultField` , `$tableName`.`$login_idField`
FROM `$tableName`
JOIN `$tableDataName` ON `$tableName`.`$patient_idField` = `$tableDataName`.`$patient_idField`
COLLATE utf8_general_ci
WHERE `$tableName`.`$login_idField` = $usssName
ORDER BY `$tableDataName`.id DESC LIMIT 10 ) AS `$tableName` JOIN `$tableDataName` ORDER by `$tableDataName`.id ASC
在没有 PHP 的情况下更新...
SELECT userlist.patient_id, results.patient_id, results.result, userlist.login_id
FROM userlist
JOIN results ON userlist.patient_id = results.patient_id
COLLATE utf8_general_ci
WHERE userlist.login_id = ####
ORDER BY results.id DESC
LIMIT 10
现在,如果我对 ASC 执行此操作之外的任何操作,它会在 patient_id 的重复项上返回错误。
有效的代码,供以后参考
SELECT *
FROM (
SELECT userlist.patient_id, results.result, userlist.login_id, results.id
FROM userlist
JOIN results ON userlist.patient_id = results.patient_id
COLLATE utf8_general_ci
WHERE userlist.login_id = ####
ORDER BY results.id DESC
LIMIT 10 ) temp
ORDER BY id
它涉及删除 SELECT 上的 .patient_id 之一。
【问题讨论】:
-
用一个完整的句子解释你想要做什么?标题不够清楚
-
在 php.ini 中执行。
JOINs 必须死! (会更快) -
但由于某种原因无法在我的 JSCharts 中加载 - 当您直接在 MySQL 中运行失败的查询时会发生什么?最好先让您的查询独立工作,然后再将其插入其他事物中。
-
我怀疑子选择出现重复列名错误(假设返回了两个
$patient_idField列) -
我认为接受帮助然后删除问题是不公平的。仅当您对编辑问题和答案感到满意时,才能查看有关使用本网站的常见问题解答。不要担心奇怪的反对票 - 它们几乎发生在每个人身上,而且得到帮助很重要。