1

我有几张桌子

table201202
table201203
table201204
table201205  
...
tableversion

tableversion我有列: Version_ID Admin_ID MONTH YEAR

我需要得到这样的东西

Select *
FROM tableversion
LEFT JOIN table(tableversion.month tableversion.year) on
    table(tableversion.month tableversion.year).Version_ID=tableversion.version_id

但是在tableversion中我有几个月没有前导0所以我必须检查是否有5然后将其更改为05,如果变量为12则什么都没有。我该怎么做?

好的,所以现在我有这样的东西

SELECT *, CONCAT('table',IF(tableversion.month < 10, CONCAT('0', tableversion.month ), tableversion.month ),year) as year
FROM tableversion
LEFT JOIN year ON tableversion.version_id=year.version_id WHERE ADMIN_ID=11

#1146 - Table 'database.year' doesn't exist

但它不起作用

4

3 回答 3

3

如此处所示,使用 LPAD:

选择 LPAD(月,2,'0') ...

于 2012-05-07T05:22:02.277 回答
1

在您担心比较月份的区域尝试此操作

IF(tableversion.month < 10, CONCAT('0', tableversion.month), tableversion.month)
于 2012-05-07T05:19:55.383 回答
1

我认为IF声明可能会表现不佳,但我没有数据支持这种说法。

您可以尝试使用 IF 语句的这种替代方法来实现相同的效果: SELECT *, LPAD(month, 2, '0') as month2 ....

于 2012-05-07T05:22:41.687 回答